diff --git a/CycloBranch.sln b/CycloBranch.sln index a6fcc20..ddcf3cb 100644 --- a/CycloBranch.sln +++ b/CycloBranch.sln @@ -1,5 +1,7 @@ Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 2012 +# Visual Studio 15 +VisualStudioVersion = 15.0.28307.757 +MinimumVisualStudioVersion = 10.0.40219.1 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "CycloBranch", "CycloBranch\CycloBranch.vcxproj", "{B12702AD-ABFB-343A-A199-8E24837244A3}" EndProject Global @@ -22,4 +24,7 @@ Global GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {A238D77E-2373-47EE-B2CF-D69807854B8B} + EndGlobalSection EndGlobal diff --git a/CycloBranch/BrickDatabases/20_amino_acids.txt b/CycloBranch/BrickDatabases/20_amino_acids.txt index 5c0f6bd..1b553cd 100644 --- a/CycloBranch/BrickDatabases/20_amino_acids.txt +++ b/CycloBranch/BrickDatabases/20_amino_acids.txt @@ -1,19 +1,19 @@ -Phenylalanine Phe C9H9NO 147.0684140000 CSID: 969 -Alanine Ala C3H5NO 71.0371110000 CSID: 582 -Leucine/Isoleucine Leu/Ile C6H11NO 113.0840700000 CSID: 834/CSID: 769 -Proline Pro C5H7NO 97.0527670000 CSID: 594 -Valine Val C5H9NO 99.0684140000 CSID: 1148 -Arginine Arg C6H12N4O 156.1011140000 CSID: 227 -Asparagine Asn C4H6N2O2 114.0429320000 CSID: 231 -Aspartic acid Asp C4H5NO3 115.0269410000 CSID: 411 -Cysteine Cys C3H5NOS 103.0091800000 CSID: 574 -Glutamine Gln C5H8N2O2 128.0584350000 CSID: 718 -Glutamic acid Glu C5H7NO3 129.0424290000 CSID: 591 -Glycine Gly C2H3NO 57.0214630000 CSID: 730 -Histidine His C6H7N3O 137.0589080000 CSID: 752 -Lysine Lys C6H12N2O 128.0949650000 CSID: 843 -Methionine Met C5H9NOS 131.0404910000 CSID: 853 -Serine Ser C3H5NO2 87.0320300000 CSID: 597 -Threonine Thr C4H7NO2 101.0476780000 CSID: 200 -Tryptophan Trp C11H10N2O 186.0793090000 CSID: 1116 -Tyrosine Tyr C9H9NO2 163.0633330000 CSID: 1121 +Phenylalanine Phe C9H9NO 147.0684140000 CSID: 969 +Alanine Ala C3H5NO 71.0371140000 CSID: 582 +Leucine/Isoleucine Leu/Ile C6H11NO 113.0840640000 CSID: 834/CSID: 769 +Proline Pro C5H7NO 97.0527640000 CSID: 594 +Valine Val C5H9NO 99.0684140000 CSID: 1148 +Arginine Arg C6H12N4O 156.1011110000 CSID: 227 +Asparagine Asn C4H6N2O2 114.0429270000 CSID: 231 +Aspartic acid Asp C4H5NO3 115.0269430000 CSID: 411 +Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 +Glutamine Gln C5H8N2O2 128.0585780000 CSID: 718 +Glutamic acid Glu C5H7NO3 129.0425930000 CSID: 591 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +Histidine His C6H7N3O 137.0589120000 CSID: 752 +Lysine Lys C6H12N2O 128.0949630000 CSID: 843 +Methionine Met C5H9NOS 131.0404850000 CSID: 853 +Serine Ser C3H5NO2 87.0320280000 CSID: 597 +Threonine Thr C4H7NO2 101.0476780000 CSID: 200 +Tryptophan Trp C11H10N2O 186.0793130000 CSID: 1116 +Tyrosine Tyr C9H9NO2 163.0633290000 CSID: 1121 diff --git a/CycloBranch/BrickDatabases/20_amino_acids_nl.txt b/CycloBranch/BrickDatabases/20_amino_acids_nl.txt new file mode 100644 index 0000000..0593d2f --- /dev/null +++ b/CycloBranch/BrickDatabases/20_amino_acids_nl.txt @@ -0,0 +1,19 @@ +Phenylalanine Phe C9H9NO 147.0684140000 CSID: 969 +Alanine Ala C3H5NO 71.0371140000 CSID: 582 +Leucine/Isoleucine Leu/Ile C6H11NO 113.0840640000 CSID: 834/CSID: 769 +Proline Pro C5H7NO 97.0527640000 CSID: 594 +Valine Val C5H9NO 99.0684140000 CSID: 1148 +Arginine Arg C6H12N4O 156.1011110000 CH2N2 CSID: 227 +Asparagine Asn C4H6N2O2 114.0429270000 NH3;CONH CSID: 231 +Aspartic acid Asp C4H5NO3 115.0269430000 H2O;CO2 CSID: 411 +Cysteine Cys C3H5NOS 103.0091840000 H2S CSID: 574 +Glutamine Gln C5H8N2O2 128.0585780000 NH3;CONH CSID: 718 +Glutamic acid Glu C5H7NO3 129.0425930000 H2O;CO2 CSID: 591 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +Histidine His C6H7N3O 137.0589120000 CSID: 752 +Lysine Lys C6H12N2O 128.0949630000 CSID: 843 +Methionine Met C5H9NOS 131.0404850000 CSID: 853 +Serine Ser C3H5NO2 87.0320280000 H2O;CH2O CSID: 597 +Threonine Thr C4H7NO2 101.0476780000 H2O;CH2CH2O CSID: 200 +Tryptophan Trp C11H10N2O 186.0793130000 CSID: 1116 +Tyrosine Tyr C9H9NO2 163.0633290000 H2O CSID: 1121 diff --git a/CycloBranch/BrickDatabases/db287_v1.txt b/CycloBranch/BrickDatabases/db287_v1.txt index 336fbcf..173f16d 100644 --- a/CycloBranch/BrickDatabases/db287_v1.txt +++ b/CycloBranch/BrickDatabases/db287_v1.txt @@ -1,287 +1,287 @@ -Ethanolamine Eta C2H5N 43.0422000000 CSID: 13835336 -Glycine Gly C2H3NO 57.0214630000 CSID: 730 -pyrrolidone Pyr C4H5N 67.0422000000 CSID: 11530 -dehydroalanine dh-Ala C3H3NO 69.0214630000 CSID: 110510 -pyruvic acid Pya C3H2O2 70.0054800000 CSID: 1031 -butanoic acid C4:0 C4H6O 70.0418640000 CSID: 259 -DL-Alanine/beta-Alanine/Sarcosine Ala/bAla/Sar C3H5NO 71.0371110000 CSID: 582/CSID: 234/CSID: 1057 -Lactic acid Lac C3H4O2 72.0211280000 CSID: 592 -Serinol Serol C3H7NO 73.0527670000 CSID: 61591 -2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HSL/NMe-Dha/OH-Pyr C4H5NO 83.0371110000 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 -2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211280000 CSID: 141066 -2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575120000 CSID: 8012 -alpha-formylGlycine aFo-Gly C3H3NO2 85.0164350000 CSID: 28 -N-Methyl-L-alanine/ABU/2-Methylalanine/methyl alaninate NMe-Ala/Abu/Aib/D-3OMe-Ala C4H7NO 85.0527670000 CSID: 4450824/CSID: 6405/CSID: 5891/CSID: 99878 -isovalinol/valinol Ivalol/Valol C5H11N 85.0894330000 CSID: 8329525/CSID: 71352 -3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367750000 CSID: 428 -2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480130000 CSID: 357 -DL-Serine/isoserine Ser/Iser C3H5NO2 87.0320300000 CSID: 597/CSID: 10793 -Sorbic acid C6:2(t2.t4) C6H6O 94.0418640000 CSID: 558605 -methyl-succinimide Me-Suc C5H5NO 95.0371110000 CSID: 122158 -proline carboxamid ProC C5H8N2 96.0687500000 CSID: 479142 -DL-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/2Dh-Mabu/norCMA C5H7NO 97.0527670000 CSID: 594/CSID: 16743754/CSID: 28708240 -3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731680000 CSID: 7469/CSID: 8552 -N-formyl-Alanine NFo-Ala C4H5NO2 99.0320300000 CSID: 72251 -DL-Valine/Isovaline/Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/Ival/Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684140000 CSID: 1148/CSID: 85483/CSID: 801/CSID: 471786/CSID: 9962964/CSID: 11271826 -Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047990000 CSID: 71362/CSID: 82355 -2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160460000 CSID: 15475591 -2-hydroxyisovaleric acid Hiv C5H8O2 100.0524310000 CSID: 90190 -2.4-diaminobutyric acid/2.3-diaminobutyric acid Dab/Dbu C4H8N2O 100.0636610000 CSID: 457/CSID: 4475641 -dehydro-cysteine dhCys C3H3NOS 100.9935320000 CSID: 24784832 -Threonine/Homoserine/N-Methyl-Serine/4-amino-3-hydroxybutyric acid Thr/Hse/NMe-Ser/OH-4Abu C4H7NO2 101.0476780000 CSID: 200/CSID: 758/CSID: 481791/CSID: 2064 -2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940000 CSID: 219301 -DL-Cysteine Cys C3H5NOS 103.0091800000 CSID: 574 -benzoic acid Bz C7H4O 104.0262160000 CSID: 238 -4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320220000 CSID: 366185/CSID: 485 -3-Methylproline/Pipecolic acid/coronamic acid Me-Pro/Pip/CMA C6H9NO 111.0684140000 CSID: 10610754/CSID: 826/CSID: 117751 -keto-Leucine/2-epoxy-hexanoic acid K-Leu/C6:0-Ep(2) C6H8O2 112.0524230000 CSID: 69/CSID: 14066572 -Hydroxy-cycloOrnithine OH-cOrn C5H8N2O 112.0636690000 CSID: 13539649 -heptanoic acid C7:0 C7H12O 112.0888150000 CSID: 7803 -aziridine dicarboxylic acid Azd C4H3NO3 113.0112860000 CSID: 11582505 -3-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/NFo-D-Abu C5H7NO2 113.0476780000 CSID: 486216/CSID: 486348 -Leucine/Isoleucine/N-Methyl-L-valine/3-Methylvaline/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/Ile/NMe-Val/t-Leu/Map/D-NMe-Nva C6H11NO 113.0840700000 CSID: 834/CSID: 769/CSID: 4225/CSID: 270637/CSID: 11643060/CSID: 10652938 -hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316870000 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 -DL-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/NFo-Dpr C4H6N2O2 114.0429320000 CSID: 231/C(C(CN)NC=O)(=O)O in CSID: 8873525 -D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3) C6H10O2 114.0680790000 CSID: 83753/CSID: 388986/CSID: 133518 -DL-Ornithine Orn C5H10N2O 114.0793090000 CSID: 380 -DL-Aspartic acid/N-formyl-isoserine Asp/NFo-Iser C4H5NO3 115.0269410000 CSID: 411/C(C(C(=O)O)O)NC=O in CSID: 8503913 -3-Hydroxyvaline/N-Methylthreonine/O-Methylthreonine OH-Val/NNe-Thr/OMe-Thr C5H9NO2 115.0633330000 CSID: 244525/CSID: 5373925/CSID: 193545 -2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0474340000 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 -2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248350000 CSID: 8233116/CSID: 2074082 -4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425970000 CSID: 3137512 -2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266050000 CSID: 388628 -phenylacetic acid Pha C8H6O 118.0418640000 CSID: 10181341 -4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211280000 CSID: 132 -trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575200000 CSID: 4520024 -hydroxypicolinic acid Hpa C6H3NO2 121.0163820000 CSID: 12827 -oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731600000 CSID: 4472125/CSID: 4944992 -4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476780000 CSID: 2564339/CSID: 10739339/CSID: 87055 -octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044710000 CSID: 370/CSID: 81904 -beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381761000 PDB: UAL -N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline Nfo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633330000 CSID: 90479/CSID: 203779/CSID: 3823469 -N-methylleucine/N-Methyl-Isoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid Me-Leu/NMe-Ile/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997100000 CSID: 493595/CSID: 487199/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 -DL-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0584350000 CSID: 718/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 -3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837340000 CSID: 277923/CSID: 2340494 -DL-Lysine/N-Hydroxy-histamine Lys/N-OH-Hta C6H12N2O 128.0949650000 CSID: 843/C1(CCCN1)CCNO in CSID: 4589228 -DL-Glutamic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0424290000 CSID: 591/CSID: 829/CSID: 92764/CSID: 184 -L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/OH-LeuOH/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789740000 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 -2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266050000 CSID: 485839 -Hydroxyasparagine OH-Asn C4H6N2O3 130.0378360000 CSID: 3670287 -alpha-guanidino Serine gSer C3H6N4O2 130.0490751000 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 -2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0634400000 CSID: 7 -N5-hydroxy ornithine/hydroxy-beta lysine OH-Orn/OH-bLys C5H10N2O2 130.0742280000 CSID: 148381/C(NCC(=O)O)(CCN)O in: NOR00634 -Hydroxyaspartic acid OH-Asp C4H5NO4 131.0218600000 CSID: 5232 -Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404910000 CSID: 853/CSID: 4450935 -arabinose/lyxose Ara/Lyx C5H8O4 132.0422610000 CSID: 224/CSID: 831 -L-Olivose Oli C6H12O3 132.0786380000 CSID: 164228 -phenylglycine Ph-Gly C8H7NO 133.0527590000 CSID: 3732 -phenylalaninol Pheol C9H11N 133.0891510000 CSID: 69116 -4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087070000 CSID: 111708 -2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9924350000 CSID: 25900403 -2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160460000 CSID: 18 -2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150000 CSID: 24770189/CSID: 10761068 -DL-Histidine His C6H7N3O 137.0589080000 CSID: 752 -dehydropyrrolidone dPyr C6H6N2O2 138.0429271000 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 -2.3-dimethylpyroglutamic acid 2Me-3Me-pGlu C7H9NO2 139.0633330000 CSID: 13080150 -5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837293000 CID: 21197379 -argininal Argal C6H12N4 140.1061950000 CSID: 10655329 -Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201110000 CSID: 7866/CSID: 10015/CSID: 31022 -N-methylchloropyrrole MCP C6H4ClNO 140.9981480000 CSID: 7404981 -N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/Fo-Ile/Fo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789740000 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 -N-dimethyl-leucine/2-Amino-4-methylpentyl acetate Dme-Leu/Ac-Leuol C8H15NO 141.1153660000 CSID: 500040/CSID: 14603948 -N-methylglutamine NMe-Gln C6H10N2 142.0742280000 CSID: 10652941 -D-beta-methylglutamine D-bMe-Gln C6H10N2O2 142.0742280000 CSID: 24604116 -3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993750000 CSID: 24791/CSID: 21418738/CSID: 27143447 -3-Methyl-Glutamic acid/2-Aminoadipic acid Me-Glu/Aad C6H9NO3 143.0582370000 CSID: 207514/CSID: 456 -L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/Me-OH-Ile C7H13NO2 143.0946290000 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 -beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn C5H8N2O3 144.0534910000 CID: 22592766/CSID: 24604117 -methoxyaspartic acid OMe-Asp C5H7NO4 145.0375000000 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 -3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738920000 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 -L-rhamnose Rha C6H10O4 146.0579010000 CSID: 190747 -Methionine-S-oxide O-Met C5H9NO2S 147.0353940000 CSID: 824 -Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450840000 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 -DL-Phenylalanine/N-methyl-phenylglycine Phe/NMe-Ph-Gly C9H9NO 147.0684140000 CSID: 969/CSID: 198596 -2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160460000 CSID: 348 -Phenyl-lactate Ph-Lac C9H8O2 148.0524230000 CSID: 3715 -HydroxyPhenylGlycine Hpg C8H7NO2 149.0476780000 CSID: 83189 -2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044710000 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 -cysteic acid CysA C3H5NO4S 150.9939210000 CSID: 23942 -D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433440000 CSID: 88776 -3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997100000 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 -2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837340000 CSID: 9964309 -2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201110000 CID: 17824924 -Hydroxyhistidine OH-His C6H7N3O2 153.0538270000 CSID: 379547 -N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153660000 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 -Alanine-thiazole Ala-Thz C6H7N2OS 154.0200900000 CSID: 23916434 -capreomycidine/enduracididine Cap/End C6H10N4O 154.0854590000 CSID: 3818574/CSID: 24775830 -decanoic acid C10:0 C10H18O 154.1357670000 CSID: 2863 -N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine N-Ac-Ile/N-Ac-Leu/Ddap C8H13NO2 155.0946290000 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 -2-Aminononanoic acid Me-AOA C9H17NO 155.1310210000 CSID: 198341 -2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323580000 CSID: 87301 -N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534910000 CSID: 2106926 -hydroxyisovalerylpropionyl Hip C8H12O3 156.0786380000 CID: 18942657 -3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898840000 CSID: 21376706 -DL-Arginine/L-(+)-Arginine Arg/L-Arg C6H12N4O 156.1011140000 CSID: 227/CSID: 6082 -3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3) C9H16O2 156.1150300000 CSID: 17247549/CSID: 33630 -N-trimethyl-leucine NtMe-Leu C9H18NO 156.1382840000 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 -Citrulline Cit C6H11N3O2 157.0851230000 CSID: 810 -isostatine/statine Ist/Sta C8H15NO2 157.1102850000 CSID: 19578058/CSID: 2632509 -N6-formyl-HydroxyOrnithine Fo-OH-Orn C6H10N2O3 158.0691470000 C(C(=O)O)(CCCN(C=O)O)N in CSID: 3294 -alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531560000 CID: 22326384 -N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684140000 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 -O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735570000 CSID: 4352115 -N-Methyl-Phenylalanine/Homophenylalanine Me-Phe/Hph C10H11NO 161.0840700000 CSID: 3846742/CSID: 92605 -Hexose Hexose C6H10O5 162.0528200000 CSID: 23139 -N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg C8H5NO3 163.0269410000 CID: 20339127 -Methionine sulfone O2-Met C5H9NO3S 163.0303130000 CSID: 63154 -phosphinothricin PT C5H10NO3P 163.0398350000 CSID: 4630 -Tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633330000 CSID: 1121/CSID: 84951/CID: 15118056 -4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473420000 CID: 9378 -propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585730000 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 -3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748170000 CID: 21295133 -3.5-dihydroxyphenylglycine Dhpg C8H7NO3 165.0425970000 CSID: 97113 -cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854590000 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 -2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993750000 CSID: 29330001 -2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946290000 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 -3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310210000 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 -1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357300000 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 -2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150300000 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 -9-methyldecanoic acid C11:0 C11H20O 168.1514220000 CSID: 4471714 -4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102850000 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 -5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803770000 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 -hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942930000 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 -homoarginine Har C7H14N4O 170.1167540000 CSID: 8732 -3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3) C10H18O2 170.1306860000 CSID: 24790/CSID: 9587708/CSID: 8949283 -N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895480000 CSID: 11856685 -N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid Ddil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259250000 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 -N-acetyl-HydroxyOrnithine Ac-OH-Orn C7H12N2O3 172.0847870000 CSID: 3670289 -tryptophanol Trpol C11H12N2 172.1000460000 CSID: 10234 -N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591620000 CSID: 21926880 -beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0667060000 CSID: 29322228 -alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997100000 CSID: 262061 -Homotyrosine/N-methyltyrosine Hty/Me-Tyr C10H11NO2 177.0789740000 CSID: 3365526/CSID: 453342 -propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742280000 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 -2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357670000 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 -beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine OH-Tyr/diOH-Phe C9H9NO3 179.0582370000 CSID: 13930867/CSID: 813 -proline-thiazole Pro-Thz C8H8N2OS 180.0357300000 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 -2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514220000 CSID: 4471802 -Anticapsin Aca C9H11NO3 181.0738920000 CSID: 2796855 -D-homoarginine D-Har C7H10N4O2 182.0803770000 CSID: 53295 -vinylogous arginine v-Arg C8H14N4O 182.1167540000 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 -dodecanoic acid C12:0 C12H22O 182.1670630000 CSID: 3756 -3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087070000 CSID: 3817439 -MeBmt/2-amino-8-oxo-decanoic acid MeBmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259250000 CSID: 9944222/CSID: 16281719 -2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636690000 CSID: 7991355 -ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847870000 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 -alpha-ketoarginine k-Arg C7H12N4O2 184.0960180000 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 -3-hydroxy-undecanoic acid/3-hydroxy-2-methyl-decanoic acid C11:0-OH(3)/C10:0-Me(2)-OH(3) C11H20O2 184.1464330000 CSID: 2340495/CSID: 13775620 -Dolapyrrolidone Dpy C12H11NO 185.0840700000 CSID: 8735462 -Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415800000 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 -DL-Tryptophan Trp C11H10N2O 186.0793090000 CSID: 1116 -hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116730000 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 -dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633330000 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 -3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909360000 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 -vinylogous tyrosine/N-acetylphenylalanine V-Tyr/Ac-Phe C11H11NO2 189.0789740000 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 -kynurenine Kyn C10H10N2O2 190.0742280000 CSID: 823 -coronafacic acid CFA C12H14O2 190.0993750000 CSID: 13300082 -N-methyl-4-methylamino-phenylalanine Me-MeA-Phe C11H14N2O 190.1106200000 CID: 21137790 -alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine Ahv/Me-Hty/e-Tyr/NMe-OMe-Tyr C11H13NO2 191.0946290000 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327 -10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514220000 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 -di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061130000 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 -beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738920000 CSID: 16174140 -O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248960000 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 -methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419160000 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 -10-methyl-3-dodecenoic acid aC13:1(3) C13H22O 194.1670630000 C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 -di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217680000 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 -3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463260000 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 -10-methyldodecanoic acid aC13:0 C13H24O 196.1824280000 CSID: 2282934 -chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243620000 CSID: 106510 -2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051880000 CSID: 11345228 -4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1414280000 CSID: 4450325 -3-hydroxy-dodecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619810000 CSID: 85026/CSID: 13775586 -9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1204350000 CSID: 25942012 -N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797060000 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 -N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949650000 CSID: 88584 -5-hydroxytryptophan OH-Trp C11H10N2O2 202.0742280000 CSID: 141 -N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262610000 CSID: 27594543 -vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738920000 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 -alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1104370000 CSID: 9681632 -N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361270000 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 -3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484100000 CSID: 205676 -7-tetradecenoic acid C14:1(7) C14H24O 208.1827180000 CSID: 10722652 -D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041721000 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 -propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0463050000 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 -5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255890000 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 -tetradecanoic acid C14:0 C14H26O 210.1983580000 CSID: 10539 -Chloro-N-methyl-tyrosine Cl-NMe-Tyr C10H10ClNO2 211.0400030000 CSID: 27594554 -3-amino-tridecanoic acid C13:0-NH2 C13H25NO 211.1934350000 CSID: 26283438 -3-hydroxy-tridecanoic acid C13:0-OH C13H24O2 212.1776370000 CSID: 4472174 -beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192660000 CSID: 25938524 -3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0954350000 CSID: 25058696 -N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898840000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 -2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110020000 CSID: 391749 -4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222480000 CSID: 21377788 -3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9694310000 CSID: 9804791 -DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531560000 CSID: 12721 -N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895480000 CSID: 11859621 -D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403380000 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 -dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146580000 CSID: 23110909 -12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1984350000 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 -2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412450000 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 -12-methyltetradecanoic acid aC15:0 C15H28O 224.2140140000 CSID: 20368 -bromophenylalanine Br-Phe C9H8BrNO 224.9789220000 CSID: 77275 -3-amino-tetradecanoic acid C14:0-NH2(3) C14H27NO 225.2092680000 CSID: 15571256 -3-hydroxy-tetradecanoic acid C14:0-OH(3) C14H26O2 226.1932770000 CSID: 15252 -tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671420000 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 -N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898840000 CSID: 1925 -beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262610000 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 -3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725400000 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 -tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827970000 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 -thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513860000 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 -D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691470000 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 -N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559940000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 -7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2144410000 CSID: 4895966/CSID: 4445872 -2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568850000 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 -hexadecanoic acid C16:0 C16H30O 238.2296690000 CSID: 960 -beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945620000 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 -3-amino-pentadecanoic acid C15:0-NH2(3) C15H29NO 239.2244350000 CSID: 26283439 -3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3) C15H28O2 240.2089170000 CSID: 9218624/CSID: 158374 -bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/OH-Br-Phe C9H8BrNO2 240.9738410000 CSID: 131083/CSID: 19757850 -beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419010000 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 -3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881960000 CID: 22667431/CSID: 28587148 -3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259400000 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 -tri-chloro-2-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu C7H10Cl3NO2 244.9777160000 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276 -N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0508970000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 -2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725400000 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 -3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089170000 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 -3-amino-hexadecanoic acid C16:0-NH2(3) C16H31NO 253.2405640000 CSID: 24597602 -3-hydroxy-hexadecanoic acid C16:0-OH(3) C16H30O2 254.2245730000 CSID: 266538 -D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894960000 CSID: 2128826 -N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004270000 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 -isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956970000 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 -5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113530000 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 -D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461670000 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 -3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157470000 CSID: 29330841 -5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898320000 CSID: 87339 -9-octadecenoic acid C18:1(9) C18H32O 264.2453250000 CSID: 553123 -8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881960000 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 -3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562200000 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 -3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402280000 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 -3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2195070000 CID: 22348653 -4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619450000 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 -N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054570000 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 -2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847350000 CSID: 643874 -3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2404420000 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 -azotobactins chromophore ChrA C14H11N3O4 285.0749450000 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 -O-demethyl-Adda DMAdda C19H25NO2 299.1885320000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 -D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756110000 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 -actinomycin chromophore ChrAct C16H10N2O5 310.0589850000 CSID: 86817 -3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041870000 CSID: 10471100 -3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364320000 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 -3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627140000 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 -3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576170000 CSID: 29330839 -O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990910000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 -3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783690000 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 -3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045840000 CSID: 29330842 -pyoverdin A chromophore derivate ChrPder C13H11N3O3 257.080048 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 -Succinic acid Suc C4H4O3 100.016045 CSID: 7634 +Ethanolamine Eta C2H5N 43.0421990000 CSID: 13835336 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +pyrrolidone Pyr C4H5N 67.0421990000 CSID: 11530 +dehydroalanine dh-Ala C3H3NO 69.0214640000 CSID: 110510 +pyruvic acid Pya C3H2O2 70.0054790000 CSID: 1031 +butanoic acid C4:0 C4H6O 70.0418650000 CSID: 259 +DL-Alanine/beta-Alanine/Sarcosine Ala/bAla/Sar C3H5NO 71.0371140000 CSID: 582/CSID: 234/CSID: 1057 +Lactic acid Lac C3H4O2 72.0211290000 CSID: 592 +Serinol Serol C3H7NO 73.0527640000 CSID: 61591 +2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HSL/NMe-Dha/OH-Pyr C4H5NO 83.0371140000 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 +2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211290000 CSID: 141066 +2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575150000 CSID: 8012 +alpha-formylGlycine aFo-Gly C3H3NO2 85.0163780000 CSID: 28 +N-Methyl-L-alanine/ABU/2-Methylalanine/methyl alaninate NMe-Ala/Abu/Aib/D-3OMe-Ala C4H7NO 85.0527640000 CSID: 4450824/CSID: 6405/CSID: 5891/CSID: 99878 +isovalinol/valinol Ivalol/Valol C5H11N 85.0891490000 CSID: 8329525/CSID: 71352 +3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367790000 CSID: 428 +2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480130000 CSID: 357 +DL-Serine/isoserine Ser/Iser C3H5NO2 87.0320280000 CSID: 597/CSID: 10793 +Sorbic acid C6:2(t2.t4) C6H6O 94.0418650000 CSID: 558605 +methyl-succinimide Me-Suc C5H5NO 95.0371140000 CSID: 122158 +proline carboxamid ProC C5H8N2 96.0687480000 CSID: 479142 +DL-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/2Dh-Mabu/norCMA C5H7NO 97.0527640000 CSID: 594/CSID: 16743754/CSID: 28708240 +3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731650000 CSID: 7469/CSID: 8552 +N-formyl-Alanine NFo-Ala C4H5NO2 99.0320280000 CSID: 72251 +DL-Valine/Isovaline/Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/Ival/Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684140000 CSID: 1148/CSID: 85483/CSID: 801/CSID: 471786/CSID: 9962964/CSID: 11271826 +Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047990000 CSID: 71362/CSID: 82355 +2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160440000 CSID: 15475591 +2-hydroxyisovaleric acid Hiv C5H8O2 100.0524300000 CSID: 90190 +2.4-diaminobutyric acid/2.3-diaminobutyric acid Dab/Dbu C4H8N2O 100.0636630000 CSID: 457/CSID: 4475641 +dehydro-cysteine dhCys C3H3NOS 100.9935340000 CSID: 24784832 +Threonine/Homoserine/N-Methyl-Serine/4-amino-3-hydroxybutyric acid Thr/Hse/NMe-Ser/OH-4Abu C4H7NO2 101.0476780000 CSID: 200/CSID: 758/CSID: 481791/CSID: 2064 +2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940000 CSID: 219301 +DL-Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 +benzoic acid Bz C7H4O 104.0262150000 CSID: 238 +4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320280000 CSID: 366185/CSID: 485 +3-Methylproline/Pipecolic acid/coronamic acid Me-Pro/Pip/CMA C6H9NO 111.0684140000 CSID: 10610754/CSID: 826/CSID: 117751 +keto-Leucine/2-epoxy-hexanoic acid K-Leu/C6:0-Ep(2) C6H8O2 112.0524300000 CSID: 69/CSID: 14066572 +Hydroxy-cycloOrnithine OH-cOrn C5H8N2O 112.0636630000 CSID: 13539649 +heptanoic acid C7:0 C7H12O 112.0888150000 CSID: 7803 +aziridine dicarboxylic acid Azd C4H3NO3 113.0112930000 CSID: 11582505 +3-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/NFo-D-Abu C5H7NO2 113.0476780000 CSID: 486216/CSID: 486348 +Leucine/Isoleucine/N-Methyl-L-valine/3-Methylvaline/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/Ile/NMe-Val/t-Leu/Map/D-NMe-Nva C6H11NO 113.0840640000 CSID: 834/CSID: 769/CSID: 4225/CSID: 270637/CSID: 11643060/CSID: 10652938 +hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316940000 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 +DL-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/NFo-Dpr C4H6N2O2 114.0429270000 CSID: 231/C(C(CN)NC=O)(=O)O in CSID: 8873525 +D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3) C6H10O2 114.0680800000 CSID: 83753/CSID: 388986/CSID: 133518 +DL-Ornithine Orn C5H10N2O 114.0793130000 CSID: 380 +DL-Aspartic acid/N-formyl-isoserine Asp/NFo-Iser C4H5NO3 115.0269430000 CSID: 411/C(C(C(=O)O)O)NC=O in CSID: 8503913 +3-Hydroxyvaline/N-Methylthreonine/O-Methylthreonine OH-Val/NNe-Thr/OMe-Thr C5H9NO2 115.0633290000 CSID: 244525/CSID: 5373925/CSID: 193545 +2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0473440000 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 +2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248350000 CSID: 8233116/CSID: 2074082 +4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425930000 CSID: 3137512 +2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266090000 CSID: 388628 +phenylacetic acid Pha C8H6O 118.0418650000 CSID: 10181341 +4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211290000 CSID: 132 +trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575150000 CSID: 4520024 +hydroxypicolinic acid Hpa C6H3NO2 121.0163780000 CSID: 12827 +oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731650000 CSID: 4472125/CSID: 4944992 +4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476780000 CSID: 2564339/CSID: 10739339/CSID: 87055 +octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044650000 CSID: 370/CSID: 81904 +beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381760000 PDB: UAL +N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline Nfo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633290000 CSID: 90479/CSID: 203779/CSID: 3823469 +N-methylleucine/N-Methyl-Isoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid Me-Leu/NMe-Ile/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140000 CSID: 493595/CSID: 487199/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 +DL-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585780000 CSID: 718/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 +3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837300000 CSID: 277923/CSID: 2340494 +DL-Lysine/N-Hydroxy-histamine Lys/N-OH-Hta C6H12N2O 128.0949630000 CSID: 843/C1(CCCN1)CCNO in CSID: 4589228 +DL-Glutamic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930000 CSID: 591/CSID: 829/CSID: 92764/CSID: 184 +L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/OH-LeuOH/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789790000 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 +2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266090000 CSID: 485839 +Hydroxyasparagine OH-Asn C4H6N2O3 130.0378420000 CSID: 3670287 +alpha-guanidino Serine gSer C3H6N4O2 130.0490750000 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 +2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0629940000 CSID: 7 +N5-hydroxy ornithine/hydroxy-beta lysine OH-Orn/OH-bLys C5H10N2O2 130.0742280000 CSID: 148381/C(NCC(=O)O)(CCN)O in: NOR00634 +Hydroxyaspartic acid OH-Asp C4H5NO4 131.0218580000 CSID: 5232 +Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404850000 CSID: 853/CSID: 4450935 +arabinose/lyxose Ara/Lyx C5H8O4 132.0422590000 CSID: 224/CSID: 831 +L-Olivose Oli C6H12O3 132.0786440000 CSID: 164228 +phenylglycine Ph-Gly C8H7NO 133.0527640000 CSID: 3732 +phenylalaninol Pheol C9H11N 133.0891490000 CSID: 69116 +4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087060000 CSID: 111708 +2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9927220000 CSID: 25900403 +2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160440000 CSID: 18 +2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150000 CSID: 24770189/CSID: 10761068 +DL-Histidine His C6H7N3O 137.0589120000 CSID: 752 +dehydropyrrolidone dPyr C6H6N2O2 138.0429270000 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 +2.3-dimethylpyroglutamic acid 2Me-3Me-pGlu C7H9NO2 139.0633290000 CSID: 13080150 +5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837300000 CID: 21197379 +argininal Argal C6H12N4 140.1061960000 CSID: 10655329 +Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201150000 CSID: 7866/CSID: 10015/CSID: 31022 +N-methylchloropyrrole MCP C6H4ClNO 140.9981420000 CSID: 7404981 +N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/Fo-Ile/Fo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789790000 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 +N-dimethyl-leucine/2-Amino-4-methylpentyl acetate Dme-Leu/Ac-Leuol C8H15NO 141.1153640000 CSID: 500040/CSID: 14603948 +N-methylglutamine NMe-Gln C6H10N2 110.0843980000 CSID: 10652941 +D-beta-methylglutamine D-bMe-Gln C6H10N2O2 142.0742280000 CSID: 24604116 +3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993800000 CSID: 24791/CSID: 21418738/CSID: 27143447 +3-Methyl-Glutamic acid/2-Aminoadipic acid Me-Glu/Aad C6H9NO3 143.0582430000 CSID: 207514/CSID: 456 +L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/Me-OH-Ile C7H13NO2 143.0946290000 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 +beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn C5H8N2O3 144.0534920000 CID: 22592766/CSID: 24604117 +methoxyaspartic acid OMe-Asp C5H7NO4 145.0375080000 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 +3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738930000 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 +L-rhamnose Rha C6H10O4 146.0579090000 CSID: 190747 +Methionine-S-oxide O-Met C5H9NO2S 147.0353990000 CSID: 824 +Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450920000 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 +DL-Phenylalanine/N-methyl-phenylglycine Phe/NMe-Ph-Gly C9H9NO 147.0684140000 CSID: 969/CSID: 198596 +2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160440000 CSID: 348 +Phenyl-lactate Ph-Lac C9H8O2 148.0524300000 CSID: 3715 +HydroxyPhenylGlycine Hpg C8H7NO2 149.0476780000 CSID: 83189 +2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044650000 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 +cysteic acid CysA C3H5NO4S 150.9939280000 CSID: 23942 +D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433430000 CSID: 88776 +3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997140000 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 +2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837300000 CSID: 9964309 +2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201150000 CID: 17824924 +Hydroxyhistidine OH-His C6H7N3O2 153.0538260000 CSID: 379547 +N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153640000 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 +Alanine-thiazole Ala-Thz C6H7N2OS 155.0279090000 CSID: 23916434 +capreomycidine/enduracididine Cap/End C6H10N4O 154.0854610000 CSID: 3818574/CSID: 24775830 +decanoic acid C10:0 C10H18O 154.1357650000 CSID: 2863 +N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine N-Ac-Ile/N-Ac-Leu/Ddap C8H13NO2 155.0946290000 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 +2-Aminononanoic acid Me-AOA C9H17NO 155.1310140000 CSID: 198341 +2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323630000 CSID: 87301 +N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534920000 CSID: 2106926 +hydroxyisovalerylpropionyl Hip C8H12O3 156.0786440000 CID: 18942657 +3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898780000 CSID: 21376706 +DL-Arginine/L-(+)-Arginine Arg/L-Arg C6H12N4O 156.1011110000 CSID: 227/CSID: 6082 +3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3) C9H16O2 156.1150300000 CSID: 17247549/CSID: 33630 +N-trimethyl-leucine NtMe-Leu C9H18NO 156.1388390000 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 +Citrulline Cit C6H11N3O2 157.0851270000 CSID: 810 +isostatine/statine Ist/Sta C8H15NO2 157.1102790000 CSID: 19578058/CSID: 2632509 +N6-formyl-HydroxyOrnithine Fo-OH-Orn C6H10N2O3 158.0691420000 C(C(=O)O)(CCCN(C=O)O)N in CSID: 3294 +alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531580000 CID: 22326384 +N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684140000 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 +O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735590000 CSID: 4352115 +N-Methyl-Phenylalanine/Homophenylalanine Me-Phe/Hph C10H11NO 161.0840640000 CSID: 3846742/CSID: 92605 +Hexose Hexose C6H10O5 162.0528230000 CSID: 23139 +N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg C8H5NO3 163.0269430000 CID: 20339127 +Methionine sulfone O2-Met C5H9NO3S 163.0303140000 CSID: 63154 +phosphinothricin PT C5H10NO3P 163.0398300000 CSID: 4630 +Tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633290000 CSID: 1121/CSID: 84951/CID: 15118056 +4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473440000 CID: 9378 +propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585780000 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 +3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748200000 CID: 21295133 +3.5-dihydroxyphenylglycine Dhpg C8H7NO3 165.0425930000 CSID: 97113 +cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854610000 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 +2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993800000 CSID: 29330001 +2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946290000 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 +3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310140000 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 +1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357340000 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 +2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150300000 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 +9-methyldecanoic acid C11:0 C11H20O 168.1514150000 CSID: 4471714 +4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102790000 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 +5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803760000 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 +hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942940000 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 +homoarginine Har C7H14N4O 170.1167610000 CSID: 8732 +3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3) C10H18O2 170.1306800000 CSID: 24790/CSID: 9587708/CSID: 8949283 +N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895430000 CSID: 11856685 +N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid Ddil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259290000 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 +N-acetyl-HydroxyOrnithine Ac-OH-Orn C7H12N2O3 172.0847920000 CSID: 3670289 +tryptophanol Trpol C11H12N2 172.1000480000 CSID: 10234 +N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591700000 CSID: 21926880 +beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0666990000 CSID: 29322228 +alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997140000 CSID: 262061 +Homotyrosine/N-methyltyrosine Hty/Me-Tyr C10H11NO2 177.0789790000 CSID: 3365526/CSID: 453342 +propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742280000 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 +2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357650000 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 +beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine OH-Tyr/diOH-Phe C9H9NO3 179.0582430000 CSID: 13930867/CSID: 813 +proline-thiazole Pro-Thz C8H8N2OS 180.0357340000 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 +2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514150000 CSID: 4471802 +Anticapsin Aca C9H11NO3 181.0738930000 CSID: 2796855 +D-homoarginine D-Har C7H10N4O2 182.0803760000 CSID: 53295 +vinylogous arginine v-Arg C8H14N4O 182.1167610000 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 +dodecanoic acid C12:0 C12H22O 182.1670650000 CSID: 3756 +3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087060000 CSID: 3817439 +MeBmt/2-amino-8-oxo-decanoic acid MeBmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259290000 CSID: 9944222/CSID: 16281719 +2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636630000 CSID: 7991355 +ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847920000 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 +alpha-ketoarginine k-Arg C7H12N4O2 184.0960260000 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 +3-hydroxy-undecanoic acid/3-hydroxy-2-methyl-decanoic acid C11:0-OH(3)/C10:0-Me(2)-OH(3) C11H20O2 184.1463300000 CSID: 2340495/CSID: 13775620 +Dolapyrrolidone Dpy C12H11NO 185.0840640000 CSID: 8735462 +Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415790000 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 +DL-Tryptophan Trp C11H10N2O 186.0793130000 CSID: 1116 +hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116760000 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 +dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633290000 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 +3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909400000 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 +vinylogous tyrosine/N-acetylphenylalanine V-Tyr/Ac-Phe C11H11NO2 189.0789790000 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 +kynurenine Kyn C10H10N2O2 190.0742280000 CSID: 823 +coronafacic acid CFA C12H14O2 190.0993800000 CSID: 13300082 +N-methyl-4-methylamino-phenylalanine Me-MeA-Phe C11H14N2O 190.1106130000 CID: 21137790 +alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine Ahv/Me-Hty/e-Tyr/NMe-OMe-Tyr C11H13NO2 191.0946290000 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327 +10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514150000 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 +di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061200000 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 +beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738930000 CSID: 16174140 +O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248940000 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 +methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419130000 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 +10-methyl-3-dodecenoic acid aC13:1(3) C13H22O 194.1670650000 C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 +di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217700000 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 +3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463300000 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 +10-methyldodecanoic acid aC13:0 C13H24O 196.1827150000 CSID: 2282934 +chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243570000 CSID: 106510 +2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051930000 CSID: 11345228 +4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1415790000 CSID: 4450325 +3-hydroxy-dodecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619800000 CSID: 85026/CSID: 13775586 +9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1208430000 CSID: 25942012 +N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797070000 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 +N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949630000 CSID: 88584 +5-hydroxytryptophan OH-Trp C11H10N2O2 202.0742280000 CSID: 141 +N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262630000 CSID: 27594543 +vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738930000 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 +alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1102790000 CSID: 9681632 +N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361280000 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 +3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484070000 CSID: 205676 +7-tetradecenoic acid C14:1(7) C14H24O 208.1827150000 CSID: 10722652 +D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041720000 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 +propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0462980000 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 +5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255940000 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 +tetradecanoic acid C14:0 C14H26O 210.1983650000 CSID: 10539 +Chloro-N-methyl-tyrosine Cl-NMe-Tyr C10H10ClNO2 211.0400070000 CSID: 27594554 +3-amino-tridecanoic acid C13:0-NH2 C13H25NO 211.1936140000 CSID: 26283438 +3-hydroxy-tridecanoic acid C13:0-OH C13H24O2 212.1776300000 CSID: 4472174 +beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192710000 CSID: 25938524 +3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0953570000 CSID: 25058696 +N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898780000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 +2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110070000 CSID: 391749 +4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222400000 CSID: 21377788 +3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9697340000 CSID: 9804791 +DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531580000 CSID: 12721 +N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895430000 CSID: 11859621 +D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403410000 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 +dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146640000 CSID: 23110909 +12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1983650000 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 +2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412450000 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 +12-methyltetradecanoic acid aC15:0 C15H28O 224.2140160000 CSID: 20368 +bromophenylalanine Br-Phe C9H8BrNO 224.9789160000 CSID: 77275 +3-amino-tetradecanoic acid C14:0-NH2(3) C14H27NO 225.2092640000 CSID: 15571256 +3-hydroxy-tetradecanoic acid C14:0-OH(3) C14H26O2 226.1932800000 CSID: 15252 +tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671480000 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 +N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898780000 CSID: 1925 +beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262630000 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 +3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725450000 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 +tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827980000 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 +thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513840000 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 +D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691420000 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 +N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559910000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 +7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2140160000 CSID: 4895966/CSID: 4445872 +2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568950000 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 +hexadecanoic acid C16:0 C16H30O 238.2296660000 CSID: 960 +beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945660000 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 +3-amino-pentadecanoic acid C15:0-NH2(3) C15H29NO 239.2249150000 CSID: 26283439 +3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3) C15H28O2 240.2089300000 CSID: 9218624/CSID: 158374 +bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/OH-Br-Phe C9H8BrNO2 240.9738310000 CSID: 131083/CSID: 19757850 +beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419130000 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 +3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881950000 CID: 22667431/CSID: 28587148 +3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259290000 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 +tri-chloro-2-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu C7H10Cl3NO2 244.9777130000 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276 +N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0509060000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 +2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725450000 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 +3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089300000 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 +3-amino-hexadecanoic acid C16:0-NH2(3) C16H31NO 253.2405650000 CSID: 24597602 +3-hydroxy-hexadecanoic acid C16:0-OH(3) C16H30O2 254.2245800000 CSID: 266538 +D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894810000 CSID: 2128826 +N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004420000 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 +isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956910000 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 +5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113410000 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 +D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461550000 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 +3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157580000 CSID: 29330841 +5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898150000 CSID: 87339 +9-octadecenoic acid C18:1(9) C18H32O 264.2453160000 CSID: 553123 +8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881950000 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 +3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562150000 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 +3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402300000 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 +3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2194950000 CID: 22348653 +4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619480000 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 +N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054650000 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 +2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847300000 CSID: 643874 +3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2402300000 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 +azotobactins chromophore ChrA C14H11N3O4 285.0749560000 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 +O-demethyl-Adda DMAdda C19H25NO2 299.1885290000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 +D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756110000 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 +actinomycin chromophore ChrAct C16H10N2O5 310.0589710000 CSID: 86817 +3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041790000 CSID: 10471100 +3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364310000 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 +3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627080000 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 +3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576230000 CSID: 29330839 +O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990940000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 +3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783580000 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 +3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045730000 CSID: 29330842 +pyoverdin A chromophore derivate ChrPder C13H11N3O3 257.0800410000 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 +Succinic acid Suc C4H4O3 100.0160440000 CSID: 7634 diff --git a/CycloBranch/BrickDatabases/db287_v2.txt b/CycloBranch/BrickDatabases/db287_v2.txt index 0f1023d..8cdf421 100644 --- a/CycloBranch/BrickDatabases/db287_v2.txt +++ b/CycloBranch/BrickDatabases/db287_v2.txt @@ -1,287 +1,287 @@ -Ethanolamine Eta C2H5N 43.0421991657 CSID: 13835336 -Glycine Gly C2H3NO 57.0214637236 CSID: 730 -pyrrolidone Pyr C4H5N 67.0421991657 CSID: 11530 -dehydroalanine dh-Ala C3H3NO 69.0214637236 CSID: 110510 -pyruvic acid Pya C3H2O2 70.0054793084 CSID: 1031 -butanoic acid C4:0 C4H6O 70.0418648147 CSID: 259 -DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371137878 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 -Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211293726 CSID: 592/CSID: 55423 -Serinol Serol C3H7NO 73.0527638520 CSID: 61591 -2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HseL/NMe-Dha/OH-Pyr C4H5NO 83.0371137878 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 -2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211293726 CSID: 141066 -2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575148789 CSID: 8012 -alpha-formylGlycine aFo-Gly C3H3NO2 85.0163783457 CSID: 28 -N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527638520 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 -isovalinol/valinol Ivalol/Valol C5H11N 85.0891493583 CSID: 8329525/CSID: 71352 -3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367794368 CSID: 428 -2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480128251 CSID: 357 -DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320284099 CSID: 597/CSID: 64231/CSID: 10793 -Sorbic acid C6:2(t2.t4) C6H6O 94.0418648147 CSID: 558605 -methyl-succinimide Me-Suc C5H5NO 95.0371137878 CSID: 122158 -proline carboxamid ProC C5H8N2 96.0687482672 CSID: 479142 -DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527638520 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 -3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731649431 CSID: 7469/CSID: 8552 -N-formyl-Alanine/D-N-formyl-Alanine NFo-Ala/D-NFo-Ala C4H5NO2 99.0320284099 CSID: 72251/CSID: 72251 -DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684139162 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 -Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047994225 CSID: 71362/CSID: 82355 -2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160439947 CSID: 15475591 -Succinic acid Suc C4H4O3 100.0160439947 CSID: 7634 -2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524295010 CSID: 90190/CID: 5289545 -2.4-diaminobutyric acid/D-2.4-diaminobutyric acid/2.3-diaminobutyric acid/(2S.3S)-2.3-diaminobutyric acid/(2R.3R)-2.3-diaminobutyric acid Dab/D-Dab/Dbu/L-Dbu/D-Dbu C4H8N2O 100.0636628893 CSID: 457/CID: 638153/CSID: 4475641/CID: 11768553/PDB: VDL -dehydro-cysteine dhCys C3H3NOS 100.9935344136 CSID: 24784832 -Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476784741 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 -2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940589 CSID: 219301 -DL-Cysteine Cys C3H5NOS 103.0091844778 CSID: 574 -benzoic acid Bz C7H4O 104.0262147505 CSID: 238 -N-methylglutamine NMe-Gln C6H10N2 110.0843983314 CSID: 10652941 -4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320284099 CSID: 366185/CSID: 485 -3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684139162 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 -keto-Leucine/2-epoxy-hexanoic acid k-Leu/C6:0-Ep(2) C6H8O2 112.0524295010 CSID: 69/CSID: 14066572 -Hydroxy-cycloOrnithine/D-Hydroxy-cycloOrnithine OH-cOrn/D-OH-cOrn C5H8N2O 112.0636628893 CSID: 13539649/CSID: 13539649 -heptanoic acid/5-methyl-hexanoic acid C7:0/iC7:0 C7H12O 112.0888150073 CSID: 7803/CID: 12344 -aziridine dicarboxylic acid Azd C4H3NO3 113.0112929678 CSID: 11582505 -3-Hydroxyproline/4-Hydroxyproline/D-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/4OH-Pro/D-4OH-Pro/NFo-D-Abu C5H7NO2 113.0476784741 CSID: 486216/PDB: HYP/CID: 440014/CSID: 486348 -Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840639804 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 -hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316940589 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 -DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429274472 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 -D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680795652 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 -DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793129535 CSID: 380/CSID: 64236 -DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430320 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 -beta-hydroxyvaline/D-beta-hydroxyvaline/N-Methylthreonine/O-Methylthreonine bOH-Val/D-bOH-Val/NMe-Thr/OMe-Thr C5H9NO2 115.0633285383 CSID: 244525/CID: 192763/CSID: 5373925/CSID: 193545 -2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0473441231 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 -2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248345420 CSID: 8233116/CSID: 2074082 -4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425930962 CSID: 3137512 -2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266086810 CSID: 388628 -phenylacetic acid Pha C8H6O 118.0418648147 CSID: 10181341 -4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211293726 CSID: 132 -trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575148789 CSID: 4520024 -hydroxypicolinic acid Hpa C6H3NO2 121.0163783457 CSID: 12827 -oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731649431 CSID: 4472125/CSID: 4944992 -4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476784741 CSID: 2564339/CSID: 10739339/CSID: 87055 -octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044650715 CSID: 370/CSID: 81904 -beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381764203 PDB: UAL -N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline NFo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633285383 CSID: 90479/CSID: 203779/CSID: 3823469 -N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140446 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 -DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585775114 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 -3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837296294 CSID: 277923/CSID: 2340494 -DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630177 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 -DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930962 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 -L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/3OH-Leu/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789786025 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 -2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266086810 CSID: 485839 -Hydroxyasparagine/D-HydroxyAsparagine OH-Asn/D-OH-Asn C4H6N2O3 130.0378420693 CSID: 3670287/CSID: 3670287 -alpha-guanidino Serine gSer C3H6N4O2 130.0490754576 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 -2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0629941873 CSID: 7 -N5-hydroxy ornithine/D-N5-HydroxyOrnithine/hydroxy-beta lysine OH-Orn/D-OH-Orn/OH-bLys C5H10N2O2 130.0742275756 CSID: 148381/C(CC(C(=O)O)N)CNO in: NOR00205/C(NCC(=O)O)(CCN)O in: NOR00634 -Hydroxyaspartic acid/D-Hydroxyaspartic acid OH-Asp/D-OH-Asp C4H5NO4 131.0218576541 CSID: 5232/CSID: 5232 -Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404846062 CSID: 853/CSID: 4450935 -arabinose/lyxose Ara/Lyx C5H8O4 132.0422587452 CSID: 224/CSID: 831 -L-Olivose Oli C6H12O3 132.0786442515 CSID: 164228 -PhenylGlycine/D-PhenylGlycine Ph-Gly/D-ph-Gly C8H7NO 133.0527638520 CSID: 3732/PDB: PG9 -phenylalaninol Pheol C9H11N 133.0891493583 CSID: 69116 -4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087064420 CSID: 111708 -2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9927220268 CSID: 25900403 -2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160439947 CSID: 18 -2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150073 CSID: 24770189/CSID: 10761068 -DL-Histidine His C6H7N3O 137.0589118624 CSID: 752 -dehydropyrrolidone dPyr C6H6N2O2 138.0429274472 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 -acetylproline/2.3-dimethylpyroglutamic acid Ac-Pro/2Me-3Me-pGlu C7H9NO2 139.0633285383 CSID: 285677/CSID: 13080150 -5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837296294 CID: 21197379 -argininal Argal C6H12N4 140.1061964060 CSID: 10655329 -Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201151357 CSID: 7866/CSID: 10015/CSID: 31022 -N-methylchloropyrrole MCP C6H4ClNO 140.9981417557 CSID: 7404981 -N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/NFo-Ile/NFo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789786025 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 -N-dimethyl-leucine/N.beta-dimethyl-leucine/O-acetyl-leucinol/N.O-dimethyl-isoleucine NdMe-Leu/NMe-bMe-Leu/OAc-Leuol/NMe-OMe-Ile C8H15NO 141.1153641088 CSID: 500040/CID: 15385160/CID: 23037829/CSID: 27194495 -beta-methylglutamine/D-beta-methylglutamine bMe-Gln/D-bMe-Gln C6H10N2O2 142.0742275756 CID: 44602399/CSID: 24604116 -3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993796936 CSID: 24791/CSID: 21418738/CSID: 27143447 -3-Methyl-Glutamic acid/Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/2-Aminoadipic acid 3Me-Glu/MeO-Glu/D-MeO-Glu/MeO-D-Glu/Aad C6H9NO3 143.0582431604 CSID: 207514/CSID: 66546/CSID: 66546/CSID: 66546/CSID: 456 -L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/NMe-OH-Ile C7H13NO2 143.0946286667 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 -beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn/D-N2Me-bOH-Asn C5H8N2O3 144.0534921335 CID: 22592766/CSID: 24604117/C(C(=O)O)(N)C(C(=O)NC)O in: NOR00669 -methoxyaspartic acid OMe-Asp C5H7NO4 145.0375077183 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 -3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738932246 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 -L-rhamnose Rha C6H10O4 146.0579088094 CSID: 190747 -Methionine-S-oxide O-Met C5H9NO2S 147.0353992283 CSID: 824 -Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450919483 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 -DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684139162 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 -2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160439947 CSID: 348 -Phenyl-lactate/D-Phenyl-lactate Ph-Lac/D-Ph-Lac C9H8O2 148.0524295010 CSID: 3715/CID: 643327 -HydroxyPhenylGlycine/D-HydroxyPhenylGlycine Hpg/D-Hpg C8H7NO2 149.0476784741 CSID: 83189/CID: 89853 -2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044650715 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 -cysteic acid/D-cysteic acid CysA/D-CysA C3H5NO4S 150.9939283441 PDB: OCS/PDB: 00C -D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433428199 CSID: 88776 -3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997140446 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 -2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837296294 CSID: 9964309 -2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201151357 CID: 17824924 -Hydroxyhistidine OH-His C6H7N3O2 153.0538264845 CSID: 379547 -N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153641088 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 -capreomycidine/enduracididine/D-enduracididine Cap/End/D-End C6H10N4O 154.0854609639 CSID: 3818574/CSID: 24775830/CSID: 24775830 -decanoic acid/isodecanoic acid/7-methylnonanoic acid C10:0/iC10:0/aC10:0 C10H18O 154.1357651999 CSID: 2863/CID: 111470/CSID: 4471754 -Alanine-thiazole Ala-Thz C6H7N2OS 155.0279085472 CSID: 23916434 -N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946286667 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 -2-Aminononanoic acid Me-AOA C9H17NO 155.1310141730 CSID: 198341 -2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323627609 CSID: 87301 -N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534921335 CSID: 2106926 -hydroxyisovalerylpropionyl Hip C8H12O3 156.0786442515 CID: 18942657 -3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898776398 CSID: 21376706 -DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110281 PDB: ARG/PDB: DAR/CSID: 6082 -3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150297578 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 -N-trimethyl-leucine NtMe-Leu C9H18NO 156.1388392051 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 -Citrulline/D-Citrulline Cit/D-Cit C6H11N3O2 157.0851266129 CSID: 810/CID: 637599 -isostatine/statine Ist/Sta C8H15NO2 157.1102787309 CSID: 19578058/CSID: 2632509 -N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691421977 PDB: FHO/PDB: FH7 -alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531577825 CID: 22326384 -N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684139162 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 -O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735588736 CSID: 4352115 -N-Methyl-Phenylalanine/D-N-Methyl-Phenylalanine/3-methylphenylalanine/Homophenylalanine NMe-Phe/D-NMe-Phe/3Me-Phe/Hph C10H11NO 161.0840639804 PDB: MEA/PDB: ZAE/PDB: APD/CSID: 92605 -Hexose/L-glucose/D-Glucose Hexose/Glc/D-Glc C6H10O5 162.0528234315 CSID: 23139/CSID: 201/PDB: GLC -N-hydroxy-dehydro-HydroxyPhenylGlycine/D-N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg/D-OH-dHpg C8H5NO3 163.0269430320 CID: 20339127/C(C(=O)O)(C1=CC=C(C=C1)O)=NO in: NOR00822 -Methionine sulfone O2-Met C5H9NO3S 163.0303138504 CSID: 63154 -phosphinothricin PT C5H10NO3P 163.0398297025 CSID: 4630 -Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633285383 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 -4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473441231 CID: 9378 -propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585775114 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 -3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748197878 CID: 21295133 -3.5-dihydroxyphenylglycine/D-3.5-dihydroxyphenylglycine Dhpg/D-Dhpg C8H7NO3 165.0425930962 PDB: D3P/PDB: D3P -cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854609639 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 -2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993796936 CSID: 29330001 -2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946286667 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 -3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310141730 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 -1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357335793 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 -2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150297578 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 -9-methyldecanoic acid/8-methyldecanoic acid iC11:0/aC11:0 C11H20O 168.1514152641 CSID: 4471714/CID: 21813 -4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102787309 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 -5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803755860 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 -hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942943157 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 -homoarginine Har C7H14N4O 170.1167610923 CSID: 8732 -3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid/2.4-dimethyl-3-hydroxyisooctanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3)/iC8:0-Me(2.4)-OH(3) C10H18O2 170.1306798220 CSID: 24790/CSID: 9587708/CSID: 8949283/CSID: 25944197 -N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895432888 CSID: 11856685 -N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid dDil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259287951 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 -N-acetyl-HydroxyOrnithine/D-N-acetyl-HydroxyOrnithine Ac-OH-Orn/D-Ac-OH-Orn C7H12N2O3 172.0847922619 PDB: AHO/CSID: 3670289 -tryptophanol Trpol C11H12N2 172.1000483956 CSID: 10234 -N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591697236 CSID: 21926880 -beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0666993567 CSID: 29322228 -alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997140446 CSID: 262061 -Homotyrosine/N-methyltyrosine/beta-hydroxy-N-Methyl-Phenylalanine Hty/NMe-Tyr/bOH-NMe-Phe C10H11NO2 177.0789786025 CSID: 3365526/CSID: 453342/CSID: 14028021 -propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742275756 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 -2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357651999 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 -beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine bOH-Tyr/diOH-Phe C9H9NO3 179.0582431604 CSID: 13930867/CSID: 813 -proline-thiazole Pro-Thz C8H8N2OS 180.0357335793 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 -2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514152641 CSID: 4471802 -Anticapsin Aca C9H11NO3 181.0738932246 CSID: 2796855 -D-homoarginine D-Har C7H10N4O2 182.0803755860 CSID: 53295 -vinylogous arginine v-Arg C8H14N4O 182.1167610923 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 -dodecanoic acid/isododecanoic acid C12:0/iC12:0 C12H22O 182.1670653283 CSID: 3756/CID: 75942 -3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087064420 CSID: 3817439 -N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259287951 CSID: 9944222/CSID: 16281719 -2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636628893 CSID: 7991355 -ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847922619 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 -alpha-ketoarginine k-Arg C7H12N4O2 184.0960256502 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 -3-hydroxy-undecanoic acid/3-hydroxy-isoundecanoic acid/3-hydroxy-2-methyl-decanoic acid/3-hydroxy-4-methyl-decanoic acid C11:0-OH(3)/iC11:0-OH(3)/C10:0-Me(2)-OH(3)/C10:0-Me(4)-OH(3) C11H20O2 184.1463298862 CSID: 2340495/CC(C)CCCCCC(CC(=O)O)O in: NOR00398/CSID: 13775620/CSID: 28533406 -Dolapyrrolidone Dpy C12H11NO 185.0840639804 CSID: 8735462 -Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415788593 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 -DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793129535 CSID: 1116/CSID: 8707 -hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116757144 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 -dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633285383 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 -3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909402723 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 -vinylogous tyrosine/N-acetylphenylalanine v-Tyr/Ac-Phe C11H11NO2 189.0789786025 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 -kynurenine/D-kynurenine Kyn/D-Kyn C10H10N2O2 190.0742275756 CSID: 823/CID: 1152206 -coronafacic acid CFA C12H14O2 190.0993796936 CSID: 13300082 -N-methyl-4-methylamino-phenylalanine/N.O-dimethyl-tyrosinecarboxamid NMe-MeA-Phe/NMe-OMe-TyrC C11H14N2O 190.1106130819 CID: 21137790/CID: 19003692 -alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/3-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine/D-N.O-dimethyl-tyrosine Ahv/NMe-Hty/3Me-Hty/e-Tyr/NMe-OMe-Tyr/D-NMe-OMe-Tyr C11H13NO2 191.0946286667 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C1=CC(=CC=C1CC(C(C(=O)O)N)C)O in: NOR00265/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327/CID: 18925327 -10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514152641 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 -di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061199162 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 -beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738932246 CSID: 16174140 -O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248941215 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 -methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419132103 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 -11-methyl-3-dodecenoic acid/10-methyl-3-dodecenoic acid iC13:1(3)/aC13:1(3) C13H22O 194.1670653283 C(CC=CCCCCCCC(C)C)(O)=O in: NOR00296/C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 -di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217699804 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 -3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463298862 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 -11-methyldodecanoic acid/10-methyldodecanoic acid iC13:0/aC13:0 C13H24O 196.1827153925 CID: 33002/CSID: 2282934 -chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243565062 CSID: 106510 -2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051933530 CSID: 11345228 -4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1415788593 CSID: 4450325 -3-hydroxy-dodecanoic acid/3-hydroxy-isododecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/iC12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619799504 CSID: 85026/CID: 15089799/CSID: 13775586 -9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1208434172 CSID: 25942012 -N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797068840 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 -N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949630177 CSID: 88584 -5-hydroxytryptophan/phototryptophan OH-Trp/pTrp C11H10N2O2 202.0742275756 CSID: 141/CID: 10331043 -N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262631461 CSID: 27594543 -vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738932246 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 -alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1102787309 CSID: 9681632 -N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361275098 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 -3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484067556 CSID: 205676 -7-tetradecenoic acid/12-methyl-3-tridecenoic acid C14:1(7)/iC14:1(3) C14H24O 208.1827153925 CSID: 10722652/PDB: LNG -D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041724777 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 -propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0462982656 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 -5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255944441 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 -tetradecanoic acid/12-methyl-tridecanoic acid C14:0/iC14:0 C14H26O 210.1983654567 PDB: MYR/CID: 520298 -Chloro-N-methyl-tyrosine/D-3-chloro-N-methyl-Tyrosine Cl-NMe-Tyr/D-Cl-NMe-Tyr C10H10ClNO2 211.0400065704 PDB: CNT/C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)Cl in: NOR00614 -3-amino-tridecanoic acid C13:0-NH2(3) C13H25NO 211.1936144298 CSID: 26283438 -3-hydroxy-tridecanoic acid/3-hydroxy-isotridecanoic acid/3-hydroxy-10-methyl-dodecanoic acid C13:0-OH(3)/iC13:0-OH(3)/aC13:0-OH(3) C13H24O2 212.1776300146 CSID: 4472174/CID: 15089800/C(CC(CCCCCCC(CC)C)O)(O)=O in: NOR00857 -beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192711283 CSID: 25938524 -3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0953569482 CSID: 25058696 -N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898776398 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 -2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110070124 CSID: 391749 -4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222404007 CSID: 21377788 -3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9697344099 CSID: 9804791 -DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531577825 CSID: 12721 -N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895432888 CSID: 11859621 -D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403409214 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 -dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146637862 CSID: 23110909 -12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1983654567 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 -2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412445083 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 -12-methyltetradecanoic acid aC15:0 C15H28O 224.2140155209 CSID: 20368 -bromophenylalanine Br-Phe C9H8BrNO 224.9789158841 CSID: 77275 -3-amino-tetradecanoic acid/3-amino-isotetradecanoic acid C14:0-NH2(3)/iC14:0-NH2(3) C14H27NO 225.2092644940 CSID: 15571256/CID: 22471993 -3-hydroxy-tetradecanoic acid/3-hydroxy-12-methyl-tridecanoic acid C14:0-OH(3)/iC14:0-OH(3) C14H26O2 226.1932800788 CSID: 15252/CID: 22471995 -tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671478841 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 -N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898776398 CSID: 1925 -beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262631461 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 -3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725446367 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 -tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827979483 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 -thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513836435 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 -D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691421977 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 -N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559909856 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 -7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2140155209 CSID: 4895966/CSID: 4445872 -2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568945725 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 -hexadecanoic acid C16:0 C16H30O 238.2296655851 CSID: 960 -beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945659483 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 -3-amino-pentadecanoic acid/3-amino-isopentadecanoic acid/3-amino-12-methyl-tetradecanoic acid C15:0-NH2(3)/iC15:0-NH2(3)/aC15:0-NH2(3) C15H29NO 239.2249145582 CSID: 26283439/C(CC(CCCCCCCCCC(C)C)N)(O)=O in: NOR00784/C(CC(CCCCCCCCC(CC)C)N)(O)=O in: NOR00785 -3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089301430 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 -bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/bOH-Br-Phe C9H8BrNO2 240.9738305062 CSID: 131083/CSID: 19757850 -beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419132103 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 -3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881947009 CID: 22667431/CSID: 28587148 -3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259287951 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 -tri-chloro-2-hydroxy-N-methyl-Leucine/tri-chloro-5-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu/Cl3-5OH-NMe-Leu C7H10Cl3NO2 244.9777125704 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276/C(C(O)=O)(NC)CC(CO)C(Cl)(Cl)Cl in: NOR00511 -N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0509056077 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 -2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725446367 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 -3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089301430 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 -3-amino-hexadecanoic acid/3-amino-isohexadecanoic acid C16:0-NH2(3)/iC16:0-NH2(3) C16H31NO 253.2405646224 CSID: 24597602/C(CC(CCCCCCCCCCC(C)C)N)(O)=O in: NOR00793 -3-hydroxy-hexadecanoic acid/3-hydroxy-isohexadecanoic acid C16:0-OH(3)/iC16:0-OH(3) C16H30O2 254.2245802072 CSID: 266538/C(CC(CCCCCCCCCCC(C)C)O)(O)=O in: NOR00897 -D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894805704 CSID: 2128826 -pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800412350 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 -N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004423261 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 -isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956912992 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 -5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113413634 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 -D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461545808 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 -3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157580393 CSID: 29330841 -5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898149214 CSID: 87339 -9-octadecenoic acid C18:1(9) C18H32O 264.2453156493 CSID: 553123 -8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881947009 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 -3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562146866 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 -3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402302714 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 -3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2194948293 CID: 22348653 -4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619483298 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 -N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054649856 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 -2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847295435 CSID: 643874 -3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2402302714 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 -azotobactins chromophore ChrA C14H11N3O4 285.0749558571 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 -O-demethyl-Adda DMAdda C19H25NO2 299.1885290519 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 -D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756105704 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 -actinomycin chromophore ChrAct C16H10N2O5 310.0589714419 CSID: 86817 -3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041791161 CSID: 10471100 -3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364307630 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 -3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627082319 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 -3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576228540 CSID: 29330839 -O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990937382 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 -3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783582961 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 -3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045730466 CSID: 29330842 +Ethanolamine Eta C2H5N 43.0421990000 CSID: 13835336 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +pyrrolidone Pyr C4H5N 67.0421990000 CSID: 11530 +dehydroalanine dh-Ala C3H3NO 69.0214640000 CSID: 110510 +pyruvic acid Pya C3H2O2 70.0054790000 CSID: 1031 +butanoic acid C4:0 C4H6O 70.0418650000 CSID: 259 +DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371140000 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 +Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211290000 CSID: 592/CSID: 55423 +Serinol Serol C3H7NO 73.0527640000 CSID: 61591 +2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HseL/NMe-Dha/OH-Pyr C4H5NO 83.0371140000 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 +2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211290000 CSID: 141066 +2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575150000 CSID: 8012 +alpha-formylGlycine aFo-Gly C3H3NO2 85.0163780000 CSID: 28 +N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527640000 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 +isovalinol/valinol Ivalol/Valol C5H11N 85.0891490000 CSID: 8329525/CSID: 71352 +3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367790000 CSID: 428 +2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480130000 CSID: 357 +DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320280000 CSID: 597/CSID: 64231/CSID: 10793 +Sorbic acid C6:2(t2.t4) C6H6O 94.0418650000 CSID: 558605 +methyl-succinimide Me-Suc C5H5NO 95.0371140000 CSID: 122158 +proline carboxamid ProC C5H8N2 96.0687480000 CSID: 479142 +DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527640000 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 +3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731650000 CSID: 7469/CSID: 8552 +N-formyl-Alanine/D-N-formyl-Alanine NFo-Ala/D-NFo-Ala C4H5NO2 99.0320280000 CSID: 72251/CSID: 72251 +DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684140000 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 +Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047990000 CSID: 71362/CSID: 82355 +2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160440000 CSID: 15475591 +Succinic acid Suc C4H4O3 100.0160440000 CSID: 7634 +2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524300000 CSID: 90190/CID: 5289545 +2.4-diaminobutyric acid/D-2.4-diaminobutyric acid/2.3-diaminobutyric acid/(2S.3S)-2.3-diaminobutyric acid/(2R.3R)-2.3-diaminobutyric acid Dab/D-Dab/Dbu/L-Dbu/D-Dbu C4H8N2O 100.0636630000 CSID: 457/CID: 638153/CSID: 4475641/CID: 11768553/PDB: VDL +dehydro-cysteine dhCys C3H3NOS 100.9935340000 CSID: 24784832 +Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476780000 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 +2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940000 CSID: 219301 +DL-Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 +benzoic acid Bz C7H4O 104.0262150000 CSID: 238 +N-methylglutamine NMe-Gln C6H10N2 110.0843980000 CSID: 10652941 +4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320280000 CSID: 366185/CSID: 485 +3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684140000 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 +keto-Leucine/2-epoxy-hexanoic acid k-Leu/C6:0-Ep(2) C6H8O2 112.0524300000 CSID: 69/CSID: 14066572 +Hydroxy-cycloOrnithine/D-Hydroxy-cycloOrnithine OH-cOrn/D-OH-cOrn C5H8N2O 112.0636630000 CSID: 13539649/CSID: 13539649 +heptanoic acid/5-methyl-hexanoic acid C7:0/iC7:0 C7H12O 112.0888150000 CSID: 7803/CID: 12344 +aziridine dicarboxylic acid Azd C4H3NO3 113.0112930000 CSID: 11582505 +3-Hydroxyproline/4-Hydroxyproline/D-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/4OH-Pro/D-4OH-Pro/NFo-D-Abu C5H7NO2 113.0476780000 CSID: 486216/PDB: HYP/CID: 440014/CSID: 486348 +Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840640000 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 +hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316940000 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 +DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429270000 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 +D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680800000 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 +DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793130000 CSID: 380/CSID: 64236 +DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430000 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 +beta-hydroxyvaline/D-beta-hydroxyvaline/N-Methylthreonine/O-Methylthreonine bOH-Val/D-bOH-Val/NMe-Thr/OMe-Thr C5H9NO2 115.0633290000 CSID: 244525/CID: 192763/CSID: 5373925/CSID: 193545 +2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0473440000 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 +2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248350000 CSID: 8233116/CSID: 2074082 +4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425930000 CSID: 3137512 +2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266090000 CSID: 388628 +phenylacetic acid Pha C8H6O 118.0418650000 CSID: 10181341 +4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211290000 CSID: 132 +trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575150000 CSID: 4520024 +hydroxypicolinic acid Hpa C6H3NO2 121.0163780000 CSID: 12827 +oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731650000 CSID: 4472125/CSID: 4944992 +4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476780000 CSID: 2564339/CSID: 10739339/CSID: 87055 +octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044650000 CSID: 370/CSID: 81904 +beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381760000 PDB: UAL +N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline NFo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633290000 CSID: 90479/CSID: 203779/CSID: 3823469 +N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140000 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 +DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585780000 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 +3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837300000 CSID: 277923/CSID: 2340494 +DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630000 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 +DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930000 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 +L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/3OH-Leu/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789790000 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 +2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266090000 CSID: 485839 +Hydroxyasparagine/D-HydroxyAsparagine OH-Asn/D-OH-Asn C4H6N2O3 130.0378420000 CSID: 3670287/CSID: 3670287 +alpha-guanidino Serine gSer C3H6N4O2 130.0490750000 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 +2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0629940000 CSID: 7 +N5-hydroxy ornithine/D-N5-HydroxyOrnithine/hydroxy-beta lysine OH-Orn/D-OH-Orn/OH-bLys C5H10N2O2 130.0742280000 CSID: 148381/C(CC(C(=O)O)N)CNO in: NOR00205/C(NCC(=O)O)(CCN)O in: NOR00634 +Hydroxyaspartic acid/D-Hydroxyaspartic acid OH-Asp/D-OH-Asp C4H5NO4 131.0218580000 CSID: 5232/CSID: 5232 +Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404850000 CSID: 853/CSID: 4450935 +arabinose/lyxose Ara/Lyx C5H8O4 132.0422590000 CSID: 224/CSID: 831 +L-Olivose Oli C6H12O3 132.0786440000 CSID: 164228 +PhenylGlycine/D-PhenylGlycine Ph-Gly/D-ph-Gly C8H7NO 133.0527640000 CSID: 3732/PDB: PG9 +phenylalaninol Pheol C9H11N 133.0891490000 CSID: 69116 +4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087060000 CSID: 111708 +2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9927220000 CSID: 25900403 +2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160440000 CSID: 18 +2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150000 CSID: 24770189/CSID: 10761068 +DL-Histidine His C6H7N3O 137.0589120000 CSID: 752 +dehydropyrrolidone dPyr C6H6N2O2 138.0429270000 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 +acetylproline/2.3-dimethylpyroglutamic acid Ac-Pro/2Me-3Me-pGlu C7H9NO2 139.0633290000 CSID: 285677/CSID: 13080150 +5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837300000 CID: 21197379 +argininal Argal C6H12N4 140.1061960000 CSID: 10655329 +Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201150000 CSID: 7866/CSID: 10015/CSID: 31022 +N-methylchloropyrrole MCP C6H4ClNO 140.9981420000 CSID: 7404981 +N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/NFo-Ile/NFo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789790000 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 +N-dimethyl-leucine/N.beta-dimethyl-leucine/O-acetyl-leucinol/N.O-dimethyl-isoleucine NdMe-Leu/NMe-bMe-Leu/OAc-Leuol/NMe-OMe-Ile C8H15NO 141.1153640000 CSID: 500040/CID: 15385160/CID: 23037829/CSID: 27194495 +beta-methylglutamine/D-beta-methylglutamine bMe-Gln/D-bMe-Gln C6H10N2O2 142.0742280000 CID: 44602399/CSID: 24604116 +3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993800000 CSID: 24791/CSID: 21418738/CSID: 27143447 +3-Methyl-Glutamic acid/Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/2-Aminoadipic acid 3Me-Glu/MeO-Glu/D-MeO-Glu/MeO-D-Glu/Aad C6H9NO3 143.0582430000 CSID: 207514/CSID: 66546/CSID: 66546/CSID: 66546/CSID: 456 +L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/NMe-OH-Ile C7H13NO2 143.0946290000 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 +beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn/D-N2Me-bOH-Asn C5H8N2O3 144.0534920000 CID: 22592766/CSID: 24604117/C(C(=O)O)(N)C(C(=O)NC)O in: NOR00669 +methoxyaspartic acid OMe-Asp C5H7NO4 145.0375080000 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 +3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738930000 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 +L-rhamnose Rha C6H10O4 146.0579090000 CSID: 190747 +Methionine-S-oxide O-Met C5H9NO2S 147.0353990000 CSID: 824 +Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450920000 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 +DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684140000 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 +2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160440000 CSID: 348 +Phenyl-lactate/D-Phenyl-lactate Ph-Lac/D-Ph-Lac C9H8O2 148.0524300000 CSID: 3715/CID: 643327 +HydroxyPhenylGlycine/D-HydroxyPhenylGlycine Hpg/D-Hpg C8H7NO2 149.0476780000 CSID: 83189/CID: 89853 +2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044650000 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 +cysteic acid/D-cysteic acid CysA/D-CysA C3H5NO4S 150.9939280000 PDB: OCS/PDB: 00C +D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433430000 CSID: 88776 +3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997140000 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 +2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837300000 CSID: 9964309 +2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201150000 CID: 17824924 +Hydroxyhistidine OH-His C6H7N3O2 153.0538260000 CSID: 379547 +N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153640000 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 +capreomycidine/enduracididine/D-enduracididine Cap/End/D-End C6H10N4O 154.0854610000 CSID: 3818574/CSID: 24775830/CSID: 24775830 +decanoic acid/isodecanoic acid/7-methylnonanoic acid C10:0/iC10:0/aC10:0 C10H18O 154.1357650000 CSID: 2863/CID: 111470/CSID: 4471754 +Alanine-thiazole Ala-Thz C6H7N2OS 155.0279090000 CSID: 23916434 +N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946290000 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 +2-Aminononanoic acid Me-AOA C9H17NO 155.1310140000 CSID: 198341 +2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323630000 CSID: 87301 +N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534920000 CSID: 2106926 +hydroxyisovalerylpropionyl Hip C8H12O3 156.0786440000 CID: 18942657 +3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898780000 CSID: 21376706 +DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110000 PDB: ARG/PDB: DAR/CSID: 6082 +3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150300000 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 +N-trimethyl-leucine NtMe-Leu C9H18NO 156.1388390000 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 +Citrulline/D-Citrulline Cit/D-Cit C6H11N3O2 157.0851270000 CSID: 810/CID: 637599 +isostatine/statine Ist/Sta C8H15NO2 157.1102790000 CSID: 19578058/CSID: 2632509 +N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691420000 PDB: FHO/PDB: FH7 +alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531580000 CID: 22326384 +N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684140000 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 +O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735590000 CSID: 4352115 +N-Methyl-Phenylalanine/D-N-Methyl-Phenylalanine/3-methylphenylalanine/Homophenylalanine NMe-Phe/D-NMe-Phe/3Me-Phe/Hph C10H11NO 161.0840640000 PDB: MEA/PDB: ZAE/PDB: APD/CSID: 92605 +Hexose/L-glucose/D-Glucose Hexose/Glc/D-Glc C6H10O5 162.0528230000 CSID: 23139/CSID: 201/PDB: GLC +N-hydroxy-dehydro-HydroxyPhenylGlycine/D-N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg/D-OH-dHpg C8H5NO3 163.0269430000 CID: 20339127/C(C(=O)O)(C1=CC=C(C=C1)O)=NO in: NOR00822 +Methionine sulfone O2-Met C5H9NO3S 163.0303140000 CSID: 63154 +phosphinothricin PT C5H10NO3P 163.0398300000 CSID: 4630 +Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633290000 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 +4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473440000 CID: 9378 +propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585780000 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 +3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748200000 CID: 21295133 +3.5-dihydroxyphenylglycine/D-3.5-dihydroxyphenylglycine Dhpg/D-Dhpg C8H7NO3 165.0425930000 PDB: D3P/PDB: D3P +cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854610000 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 +2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993800000 CSID: 29330001 +2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946290000 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 +3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310140000 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 +1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357340000 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 +2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150300000 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 +9-methyldecanoic acid/8-methyldecanoic acid iC11:0/aC11:0 C11H20O 168.1514150000 CSID: 4471714/CID: 21813 +4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102790000 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 +5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803760000 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 +hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942940000 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 +homoarginine Har C7H14N4O 170.1167610000 CSID: 8732 +3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid/2.4-dimethyl-3-hydroxyisooctanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3)/iC8:0-Me(2.4)-OH(3) C10H18O2 170.1306800000 CSID: 24790/CSID: 9587708/CSID: 8949283/CSID: 25944197 +N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895430000 CSID: 11856685 +N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid dDil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259290000 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 +N-acetyl-HydroxyOrnithine/D-N-acetyl-HydroxyOrnithine Ac-OH-Orn/D-Ac-OH-Orn C7H12N2O3 172.0847920000 PDB: AHO/CSID: 3670289 +tryptophanol Trpol C11H12N2 172.1000480000 CSID: 10234 +N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591700000 CSID: 21926880 +beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0666990000 CSID: 29322228 +alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997140000 CSID: 262061 +Homotyrosine/N-methyltyrosine/beta-hydroxy-N-Methyl-Phenylalanine Hty/NMe-Tyr/bOH-NMe-Phe C10H11NO2 177.0789790000 CSID: 3365526/CSID: 453342/CSID: 14028021 +propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742280000 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 +2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357650000 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 +beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine bOH-Tyr/diOH-Phe C9H9NO3 179.0582430000 CSID: 13930867/CSID: 813 +proline-thiazole Pro-Thz C8H8N2OS 180.0357340000 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 +2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514150000 CSID: 4471802 +Anticapsin Aca C9H11NO3 181.0738930000 CSID: 2796855 +D-homoarginine D-Har C7H10N4O2 182.0803760000 CSID: 53295 +vinylogous arginine v-Arg C8H14N4O 182.1167610000 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 +dodecanoic acid/isododecanoic acid C12:0/iC12:0 C12H22O 182.1670650000 CSID: 3756/CID: 75942 +3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087060000 CSID: 3817439 +N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259290000 CSID: 9944222/CSID: 16281719 +2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636630000 CSID: 7991355 +ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847920000 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 +alpha-ketoarginine k-Arg C7H12N4O2 184.0960260000 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 +3-hydroxy-undecanoic acid/3-hydroxy-isoundecanoic acid/3-hydroxy-2-methyl-decanoic acid/3-hydroxy-4-methyl-decanoic acid C11:0-OH(3)/iC11:0-OH(3)/C10:0-Me(2)-OH(3)/C10:0-Me(4)-OH(3) C11H20O2 184.1463300000 CSID: 2340495/CC(C)CCCCCC(CC(=O)O)O in: NOR00398/CSID: 13775620/CSID: 28533406 +Dolapyrrolidone Dpy C12H11NO 185.0840640000 CSID: 8735462 +Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415790000 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 +DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793130000 CSID: 1116/CSID: 8707 +hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116760000 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 +dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633290000 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 +3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909400000 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 +vinylogous tyrosine/N-acetylphenylalanine v-Tyr/Ac-Phe C11H11NO2 189.0789790000 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 +kynurenine/D-kynurenine Kyn/D-Kyn C10H10N2O2 190.0742280000 CSID: 823/CID: 1152206 +coronafacic acid CFA C12H14O2 190.0993800000 CSID: 13300082 +N-methyl-4-methylamino-phenylalanine/N.O-dimethyl-tyrosinecarboxamid NMe-MeA-Phe/NMe-OMe-TyrC C11H14N2O 190.1106130000 CID: 21137790/CID: 19003692 +alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/3-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine/D-N.O-dimethyl-tyrosine Ahv/NMe-Hty/3Me-Hty/e-Tyr/NMe-OMe-Tyr/D-NMe-OMe-Tyr C11H13NO2 191.0946290000 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C1=CC(=CC=C1CC(C(C(=O)O)N)C)O in: NOR00265/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327/CID: 18925327 +10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514150000 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 +di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061200000 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 +beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738930000 CSID: 16174140 +O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248940000 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 +methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419130000 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 +11-methyl-3-dodecenoic acid/10-methyl-3-dodecenoic acid iC13:1(3)/aC13:1(3) C13H22O 194.1670650000 C(CC=CCCCCCCC(C)C)(O)=O in: NOR00296/C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 +di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217700000 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 +3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463300000 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 +11-methyldodecanoic acid/10-methyldodecanoic acid iC13:0/aC13:0 C13H24O 196.1827150000 CID: 33002/CSID: 2282934 +chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243570000 CSID: 106510 +2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051930000 CSID: 11345228 +4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1415790000 CSID: 4450325 +3-hydroxy-dodecanoic acid/3-hydroxy-isododecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/iC12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619800000 CSID: 85026/CID: 15089799/CSID: 13775586 +9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1208430000 CSID: 25942012 +N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797070000 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 +N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949630000 CSID: 88584 +5-hydroxytryptophan/phototryptophan OH-Trp/pTrp C11H10N2O2 202.0742280000 CSID: 141/CID: 10331043 +N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262630000 CSID: 27594543 +vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738930000 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 +alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1102790000 CSID: 9681632 +N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361280000 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 +3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484070000 CSID: 205676 +7-tetradecenoic acid/12-methyl-3-tridecenoic acid C14:1(7)/iC14:1(3) C14H24O 208.1827150000 CSID: 10722652/PDB: LNG +D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041720000 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 +propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0462980000 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 +5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255940000 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 +tetradecanoic acid/12-methyl-tridecanoic acid C14:0/iC14:0 C14H26O 210.1983650000 PDB: MYR/CID: 520298 +Chloro-N-methyl-tyrosine/D-3-chloro-N-methyl-Tyrosine Cl-NMe-Tyr/D-Cl-NMe-Tyr C10H10ClNO2 211.0400070000 PDB: CNT/C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)Cl in: NOR00614 +3-amino-tridecanoic acid C13:0-NH2(3) C13H25NO 211.1936140000 CSID: 26283438 +3-hydroxy-tridecanoic acid/3-hydroxy-isotridecanoic acid/3-hydroxy-10-methyl-dodecanoic acid C13:0-OH(3)/iC13:0-OH(3)/aC13:0-OH(3) C13H24O2 212.1776300000 CSID: 4472174/CID: 15089800/C(CC(CCCCCCC(CC)C)O)(O)=O in: NOR00857 +beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192710000 CSID: 25938524 +3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0953570000 CSID: 25058696 +N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898780000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 +2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110070000 CSID: 391749 +4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222400000 CSID: 21377788 +3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9697340000 CSID: 9804791 +DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531580000 CSID: 12721 +N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895430000 CSID: 11859621 +D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403410000 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 +dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146640000 CSID: 23110909 +12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1983650000 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 +2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412450000 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 +12-methyltetradecanoic acid aC15:0 C15H28O 224.2140160000 CSID: 20368 +bromophenylalanine Br-Phe C9H8BrNO 224.9789160000 CSID: 77275 +3-amino-tetradecanoic acid/3-amino-isotetradecanoic acid C14:0-NH2(3)/iC14:0-NH2(3) C14H27NO 225.2092640000 CSID: 15571256/CID: 22471993 +3-hydroxy-tetradecanoic acid/3-hydroxy-12-methyl-tridecanoic acid C14:0-OH(3)/iC14:0-OH(3) C14H26O2 226.1932800000 CSID: 15252/CID: 22471995 +tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671480000 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 +N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898780000 CSID: 1925 +beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262630000 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 +3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725450000 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 +tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827980000 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 +thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513840000 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 +D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691420000 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 +N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559910000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 +7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2140160000 CSID: 4895966/CSID: 4445872 +2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568950000 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 +hexadecanoic acid C16:0 C16H30O 238.2296660000 CSID: 960 +beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945660000 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 +3-amino-pentadecanoic acid/3-amino-isopentadecanoic acid/3-amino-12-methyl-tetradecanoic acid C15:0-NH2(3)/iC15:0-NH2(3)/aC15:0-NH2(3) C15H29NO 239.2249150000 CSID: 26283439/C(CC(CCCCCCCCCC(C)C)N)(O)=O in: NOR00784/C(CC(CCCCCCCCC(CC)C)N)(O)=O in: NOR00785 +3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089300000 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 +bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/bOH-Br-Phe C9H8BrNO2 240.9738310000 CSID: 131083/CSID: 19757850 +beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419130000 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 +3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881950000 CID: 22667431/CSID: 28587148 +3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259290000 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 +tri-chloro-2-hydroxy-N-methyl-Leucine/tri-chloro-5-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu/Cl3-5OH-NMe-Leu C7H10Cl3NO2 244.9777130000 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276/C(C(O)=O)(NC)CC(CO)C(Cl)(Cl)Cl in: NOR00511 +N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0509060000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 +2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725450000 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 +3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089300000 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 +3-amino-hexadecanoic acid/3-amino-isohexadecanoic acid C16:0-NH2(3)/iC16:0-NH2(3) C16H31NO 253.2405650000 CSID: 24597602/C(CC(CCCCCCCCCCC(C)C)N)(O)=O in: NOR00793 +3-hydroxy-hexadecanoic acid/3-hydroxy-isohexadecanoic acid C16:0-OH(3)/iC16:0-OH(3) C16H30O2 254.2245800000 CSID: 266538/C(CC(CCCCCCCCCCC(C)C)O)(O)=O in: NOR00897 +D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894810000 CSID: 2128826 +pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 +N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004420000 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 +isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956910000 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 +5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113410000 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 +D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461550000 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 +3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157580000 CSID: 29330841 +5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898150000 CSID: 87339 +9-octadecenoic acid C18:1(9) C18H32O 264.2453160000 CSID: 553123 +8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881950000 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 +3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562150000 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 +3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402300000 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 +3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2194950000 CID: 22348653 +4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619480000 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 +N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054650000 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 +2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847300000 CSID: 643874 +3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2402300000 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 +azotobactins chromophore ChrA C14H11N3O4 285.0749560000 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 +O-demethyl-Adda DMAdda C19H25NO2 299.1885290000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 +D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756110000 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 +actinomycin chromophore ChrAct C16H10N2O5 310.0589710000 CSID: 86817 +3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041790000 CSID: 10471100 +3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364310000 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 +3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627080000 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 +3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576230000 CSID: 29330839 +O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990940000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 +3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783580000 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 +3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045730000 CSID: 29330842 diff --git a/CycloBranch/BrickDatabases/db287_v3.txt b/CycloBranch/BrickDatabases/db287_v3.txt index d020a03..80dfacd 100644 --- a/CycloBranch/BrickDatabases/db287_v3.txt +++ b/CycloBranch/BrickDatabases/db287_v3.txt @@ -1,287 +1,287 @@ -Ethanolamine Eta C2H5N 43.0421990000 CSID: 13835336 -Glycine Gly C2H3NO 57.0214640000 CSID: 730 -pyrrolidone Pyr C4H5N 67.0421990000 CSID: 11530 -dehydroalanine dh-Ala C3H3NO 69.0214640000 CSID: 110510 -pyruvic acid Pya C3H2O2 70.0054790000 CSID: 1031 -butanoic acid C4:0 C4H6O 70.0418650000 CSID: 259 -DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371140000 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 -Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211290000 CSID: 592/CSID: 55423 -Serinol Serol C3H7NO 73.0527640000 CSID: 61591 -2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HseL/NMe-Dha/OH-Pyr C4H5NO 83.0371140000 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 -2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211290000 CSID: 141066 -2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575150000 CSID: 8012 -alpha-formylGlycine aFo-Gly C3H3NO2 85.0163780000 CSID: 28 -N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527640000 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 -isovalinol/valinol Ivalol/Valol C5H11N 85.0891490000 CSID: 8329525/CSID: 71352 -3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367790000 CSID: 428 -2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480130000 CSID: 357 -DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320280000 CSID: 597/CSID: 64231/CSID: 10793 -Sorbic acid C6:2(t2.t4) C6H6O 94.0418650000 CSID: 558605 -methyl-succinimide Me-Suc C5H5NO 95.0371140000 CSID: 122158 -proline carboxamid ProC C5H8N2 96.0687480000 CSID: 479142 -DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527640000 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 -3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731650000 CSID: 7469/CSID: 8552 -N-formyl-Alanine/D-N-formyl-Alanine NFo-Ala/D-NFo-Ala C4H5NO2 99.0320280000 CSID: 72251/CSID: 72251 -DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684140000 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 -Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047990000 CSID: 71362/CSID: 82355 -2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160440000 CSID: 15475591 -Succinic acid Suc C4H4O3 100.0160440000 CSID: 7634 -2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524300000 CSID: 90190/CID: 5289545 -2.4-diaminobutyric acid/D-2.4-diaminobutyric acid/2.3-diaminobutyric acid/(2S.3S)-2.3-diaminobutyric acid/(2R.3R)-2.3-diaminobutyric acid Dab/D-Dab/Dbu/L-Dbu/D-Dbu C4H8N2O 100.0636630000 CSID: 457/CID: 638153/CSID: 4475641/CID: 11768553/PDB: VDL -dehydro-cysteine dhCys C3H3NOS 100.9935340000 CSID: 24784832 -Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476780000 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 -2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940000 CSID: 219301 -DL-Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 -benzoic acid Bz C7H4O 104.0262150000 CSID: 238 -N-methylglutamine NMe-Gln C6H10N2 110.0843980000 CSID: 10652941 -4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320280000 CSID: 366185/CSID: 485 -3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684140000 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 -keto-Leucine/2-epoxy-hexanoic acid/(2E)-5-Hydroxy-3-methyl-2-pentenoic acid k-Leu/C6:0-Ep(2)/OH-MP C6H8O2 112.0524300000 CSID: 69/CSID: 14066572/CSID: 32988805 -Hydroxy-cycloOrnithine/D-Hydroxy-cycloOrnithine OH-cOrn/D-OH-cOrn C5H8N2O 112.0636630000 CSID: 13539649/CSID: 13539649 -heptanoic acid/5-methyl-hexanoic acid C7:0/iC7:0 C7H12O 112.0888150000 CSID: 7803/CID: 12344 -aziridine dicarboxylic acid Azd C4H3NO3 113.0112930000 CSID: 11582505 -3-Hydroxyproline/4-Hydroxyproline/D-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/4OH-Pro/D-4OH-Pro/NFo-D-Abu C5H7NO2 113.0476780000 CSID: 486216/PDB: HYP/CID: 440014/CSID: 486348 -Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840640000 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 -hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316940000 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 -DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429270000 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 -D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680800000 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 -DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793130000 CSID: 380/CSID: 64236 -DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430000 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 -beta-hydroxyvaline/D-beta-hydroxyvaline/N-Methylthreonine/O-Methylthreonine bOH-Val/D-bOH-Val/NMe-Thr/OMe-Thr C5H9NO2 115.0633290000 CSID: 244525/CID: 192763/CSID: 5373925/CSID: 193545 -2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0473440000 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 -2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248350000 CSID: 8233116/CSID: 2074082 -4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425930000 CSID: 3137512 -2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266090000 CSID: 388628 -phenylacetic acid Pha C8H6O 118.0418650000 CSID: 10181341 -4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211290000 CSID: 132 -trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575150000 CSID: 4520024 -hydroxypicolinic acid Hpa C6H3NO2 121.0163780000 CSID: 12827 -oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731650000 CSID: 4472125/CSID: 4944992 -4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476780000 CSID: 2564339/CSID: 10739339/CSID: 87055 -octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044650000 CSID: 370/CSID: 81904 -beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381760000 PDB: UAL -N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline NFo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633290000 CSID: 90479/CSID: 203779/CSID: 3823469 -N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140000 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 -DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585780000 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 -3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837300000 CSID: 277923/CSID: 2340494 -DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630000 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 -DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930000 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 -L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/3OH-Leu/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789790000 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 -2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266090000 CSID: 485839 -Hydroxyasparagine/D-HydroxyAsparagine OH-Asn/D-OH-Asn C4H6N2O3 130.0378420000 CSID: 3670287/CSID: 3670287 -alpha-guanidino Serine gSer C3H6N4O2 130.0490750000 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 -2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0629940000 CSID: 7 -N5-hydroxy ornithine/D-N5-HydroxyOrnithine/hydroxy-beta lysine OH-Orn/D-OH-Orn/OH-bLys C5H10N2O2 130.0742280000 CSID: 148381/C(CC(C(=O)O)N)CNO in: NOR00205/C(NCC(=O)O)(CCN)O in: NOR00634 -Hydroxyaspartic acid/D-Hydroxyaspartic acid OH-Asp/D-OH-Asp C4H5NO4 131.0218580000 CSID: 5232/CSID: 5232 -Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404850000 CSID: 853/CSID: 4450935 -arabinose/lyxose Ara/Lyx C5H8O4 132.0422590000 CSID: 224/CSID: 831 -L-Olivose Oli C6H12O3 132.0786440000 CSID: 164228 -PhenylGlycine/D-PhenylGlycine Ph-Gly/D-ph-Gly C8H7NO 133.0527640000 CSID: 3732/PDB: PG9 -phenylalaninol Pheol C9H11N 133.0891490000 CSID: 69116 -4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087060000 CSID: 111708 -2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9927220000 CSID: 25900403 -2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160440000 CSID: 18 -2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150000 CSID: 24770189/CSID: 10761068 -DL-Histidine His C6H7N3O 137.0589120000 CSID: 752 -dehydropyrrolidone dPyr C6H6N2O2 138.0429270000 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 -acetylproline/2.3-dimethylpyroglutamic acid Ac-Pro/2Me-3Me-pGlu C7H9NO2 139.0633290000 CSID: 285677/CSID: 13080150 -5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837300000 CID: 21197379 -argininal Argal C6H12N4 140.1061960000 CSID: 10655329 -Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201150000 CSID: 7866/CSID: 10015/CSID: 31022 -N-methylchloropyrrole MCP C6H4ClNO 140.9981420000 CSID: 7404981 -N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/NFo-Ile/NFo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789790000 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 -N-dimethyl-leucine/N.beta-dimethyl-leucine/O-acetyl-leucinol/N.O-dimethyl-isoleucine NdMe-Leu/NMe-bMe-Leu/OAc-Leuol/NMe-OMe-Ile C8H15NO 141.1153640000 CSID: 500040/CID: 15385160/CID: 23037829/CSID: 27194495 -beta-methylglutamine/D-beta-methylglutamine bMe-Gln/D-bMe-Gln C6H10N2O2 142.0742280000 CID: 44602399/CSID: 24604116 -3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993800000 CSID: 24791/CSID: 21418738/CSID: 27143447 -3-Methyl-Glutamic acid/Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/2-Aminoadipic acid 3Me-Glu/MeO-Glu/D-MeO-Glu/MeO-D-Glu/Aad C6H9NO3 143.0582430000 CSID: 207514/CSID: 66546/CSID: 66546/CSID: 66546/CSID: 456 -L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/NMe-OH-Ile C7H13NO2 143.0946290000 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 -beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn/D-N2Me-bOH-Asn C5H8N2O3 144.0534920000 CID: 22592766/CSID: 24604117/C(C(=O)O)(N)C(C(=O)NC)O in: NOR00669 -methoxyaspartic acid OMe-Asp C5H7NO4 145.0375080000 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 -3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738930000 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 -L-rhamnose Rha C6H10O4 146.0579090000 CSID: 190747 -Methionine-S-oxide O-Met C5H9NO2S 147.0353990000 CSID: 824 -Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450920000 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 -DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684140000 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 -2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160440000 CSID: 348 -Phenyl-lactate/D-Phenyl-lactate Ph-Lac/D-Ph-Lac C9H8O2 148.0524300000 CSID: 3715/CID: 643327 -HydroxyPhenylGlycine/D-HydroxyPhenylGlycine Hpg/D-Hpg C8H7NO2 149.0476780000 CSID: 83189/CID: 89853 -2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044650000 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 -cysteic acid/D-cysteic acid CysA/D-CysA C3H5NO4S 150.9939280000 PDB: OCS/PDB: 00C -D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433430000 CSID: 88776 -3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997140000 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 -2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837300000 CSID: 9964309 -2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201150000 CID: 17824924 -Hydroxyhistidine OH-His C6H7N3O2 153.0538260000 CSID: 379547 -N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153640000 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 -capreomycidine/enduracididine/D-enduracididine Cap/End/D-End C6H10N4O 154.0854610000 CSID: 3818574/CSID: 24775830/CSID: 24775830 -decanoic acid/isodecanoic acid/7-methylnonanoic acid C10:0/iC10:0/aC10:0 C10H18O 154.1357650000 CSID: 2863/CID: 111470/CSID: 4471754 -Alanine-thiazole Ala-Thz C6H7N2OS 155.0279090000 CSID: 23916434 -N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946290000 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 -2-Aminononanoic acid Me-AOA C9H17NO 155.1310140000 CSID: 198341 -2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323630000 CSID: 87301 -N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534920000 CSID: 2106926 -hydroxyisovalerylpropionyl Hip C8H12O3 156.0786440000 CID: 18942657 -3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898780000 CSID: 21376706 -DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110000 PDB: ARG/PDB: DAR/CSID: 6082 -3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150300000 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 -N-trimethyl-leucine NtMe-Leu C9H18NO 156.1388390000 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 -Citrulline/D-Citrulline Cit/D-Cit C6H11N3O2 157.0851270000 CSID: 810/CID: 637599 -isostatine/statine Ist/Sta C8H15NO2 157.1102790000 CSID: 19578058/CSID: 2632509 -N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691420000 PDB: FHO/PDB: FH7 -alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531580000 CID: 22326384 -N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684140000 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 -O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735590000 CSID: 4352115 -N-Methyl-Phenylalanine/D-N-Methyl-Phenylalanine/3-methylphenylalanine/Homophenylalanine NMe-Phe/D-NMe-Phe/3Me-Phe/Hph C10H11NO 161.0840640000 PDB: MEA/PDB: ZAE/PDB: APD/CSID: 92605 -Hexose/L-glucose/D-Glucose Hexose/Glc/D-Glc C6H10O5 162.0528230000 CSID: 23139/CSID: 201/PDB: GLC -N-hydroxy-dehydro-HydroxyPhenylGlycine/D-N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg/D-OH-dHpg C8H5NO3 163.0269430000 CID: 20339127/C(C(=O)O)(C1=CC=C(C=C1)O)=NO in: NOR00822 -Methionine sulfone O2-Met C5H9NO3S 163.0303140000 CSID: 63154 -phosphinothricin PT C5H10NO3P 163.0398300000 CSID: 4630 -Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633290000 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 -4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473440000 CID: 9378 -propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585780000 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 -3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748200000 CID: 21295133 -3.5-dihydroxyphenylglycine/D-3.5-dihydroxyphenylglycine Dhpg/D-Dhpg C8H7NO3 165.0425930000 PDB: D3P/PDB: D3P -cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854610000 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 -2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993800000 CSID: 29330001 -2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946290000 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 -3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310140000 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 -1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357340000 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 -2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150300000 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 -9-methyldecanoic acid/8-methyldecanoic acid iC11:0/aC11:0 C11H20O 168.1514150000 CSID: 4471714/CID: 21813 -4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102790000 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 -5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803760000 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 -hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942940000 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 -homoarginine Har C7H14N4O 170.1167610000 CSID: 8732 -3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid/2.4-dimethyl-3-hydroxyisooctanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3)/iC8:0-Me(2.4)-OH(3) C10H18O2 170.1306800000 CSID: 24790/CSID: 9587708/CSID: 8949283/CSID: 25944197 -N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895430000 CSID: 11856685 -N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid dDil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259290000 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 -N-acetyl-HydroxyOrnithine/D-N-acetyl-HydroxyOrnithine/N2-acetyl-N5-hydroxy-L-ornithine Ac-OH-Orn/D-Ac-OH-Orn/N2Ac-OH-Orn C7H12N2O3 172.0847920000 PDB: AHO/CSID: 3670289/CSID: 0 -tryptophanol Trpol C11H12N2 172.1000480000 CSID: 10234 -N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591700000 CSID: 21926880 -beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0666990000 CSID: 29322228 -alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997140000 CSID: 262061 -Homotyrosine/N-methyltyrosine/beta-hydroxy-N-Methyl-Phenylalanine Hty/NMe-Tyr/bOH-NMe-Phe C10H11NO2 177.0789790000 CSID: 3365526/CSID: 453342/CSID: 14028021 -propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742280000 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 -2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357650000 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 -beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine bOH-Tyr/diOH-Phe C9H9NO3 179.0582430000 CSID: 13930867/CSID: 813 -proline-thiazole Pro-Thz C8H8N2OS 180.0357340000 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 -2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514150000 CSID: 4471802 -Anticapsin Aca C9H11NO3 181.0738930000 CSID: 2796855 -D-homoarginine D-Har C7H10N4O2 182.0803760000 CSID: 53295 -vinylogous arginine v-Arg C8H14N4O 182.1167610000 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 -dodecanoic acid/isododecanoic acid C12:0/iC12:0 C12H22O 182.1670650000 CSID: 3756/CID: 75942 -3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087060000 CSID: 3817439 -N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259290000 CSID: 9944222/CSID: 16281719 -2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636630000 CSID: 7991355 -ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847920000 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 -alpha-ketoarginine k-Arg C7H12N4O2 184.0960260000 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 -3-hydroxy-undecanoic acid/3-hydroxy-isoundecanoic acid/3-hydroxy-2-methyl-decanoic acid/3-hydroxy-4-methyl-decanoic acid C11:0-OH(3)/iC11:0-OH(3)/C10:0-Me(2)-OH(3)/C10:0-Me(4)-OH(3) C11H20O2 184.1463300000 CSID: 2340495/CC(C)CCCCCC(CC(=O)O)O in: NOR00398/CSID: 13775620/CSID: 28533406 -Dolapyrrolidone Dpy C12H11NO 185.0840640000 CSID: 8735462 -Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415790000 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 -DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793130000 CSID: 1116/CSID: 8707 -hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116760000 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 -dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633290000 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 -3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909400000 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 -vinylogous tyrosine/N-acetylphenylalanine v-Tyr/Ac-Phe C11H11NO2 189.0789790000 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 -kynurenine/D-kynurenine Kyn/D-Kyn C10H10N2O2 190.0742280000 CSID: 823/CID: 1152206 -coronafacic acid CFA C12H14O2 190.0993800000 CSID: 13300082 -N-methyl-4-methylamino-phenylalanine/N.O-dimethyl-tyrosinecarboxamid NMe-MeA-Phe/NMe-OMe-TyrC C11H14N2O 190.1106130000 CID: 21137790/CID: 19003692 -alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/3-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine/D-N.O-dimethyl-tyrosine Ahv/NMe-Hty/3Me-Hty/e-Tyr/NMe-OMe-Tyr/D-NMe-OMe-Tyr C11H13NO2 191.0946290000 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C1=CC(=CC=C1CC(C(C(=O)O)N)C)O in: NOR00265/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327/CID: 18925327 -10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514150000 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 -di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061200000 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 -beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738930000 CSID: 16174140 -O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248940000 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 -methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419130000 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 -11-methyl-3-dodecenoic acid/10-methyl-3-dodecenoic acid iC13:1(3)/aC13:1(3) C13H22O 194.1670650000 C(CC=CCCCCCCC(C)C)(O)=O in: NOR00296/C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 -di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217700000 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 -3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463300000 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 -11-methyldodecanoic acid/10-methyldodecanoic acid iC13:0/aC13:0 C13H24O 196.1827150000 CID: 33002/CSID: 2282934 -chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243570000 CSID: 106510 -2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051930000 CSID: 11345228 -4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1415790000 CSID: 4450325 -3-hydroxy-dodecanoic acid/3-hydroxy-isododecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/iC12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619800000 CSID: 85026/CID: 15089799/CSID: 13775586 -9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1208430000 CSID: 25942012 -N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797070000 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 -N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949630000 CSID: 88584 -5-hydroxytryptophan/phototryptophan OH-Trp/pTrp C11H10N2O2 202.0742280000 CSID: 141/CID: 10331043 -N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262630000 CSID: 27594543 -vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738930000 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 -alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1102790000 CSID: 9681632 -N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361280000 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 -3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484070000 CSID: 205676 -7-tetradecenoic acid/12-methyl-3-tridecenoic acid C14:1(7)/iC14:1(3) C14H24O 208.1827150000 CSID: 10722652/PDB: LNG -D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041720000 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 -propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0462980000 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 -5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255940000 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 -tetradecanoic acid/12-methyl-tridecanoic acid C14:0/iC14:0 C14H26O 210.1983650000 PDB: MYR/CID: 520298 -Chloro-N-methyl-tyrosine/D-3-chloro-N-methyl-Tyrosine Cl-NMe-Tyr/D-Cl-NMe-Tyr C10H10ClNO2 211.0400070000 PDB: CNT/C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)Cl in: NOR00614 -3-amino-tridecanoic acid C13:0-NH2(3) C13H25NO 211.1936140000 CSID: 26283438 -3-hydroxy-tridecanoic acid/3-hydroxy-isotridecanoic acid/3-hydroxy-10-methyl-dodecanoic acid C13:0-OH(3)/iC13:0-OH(3)/aC13:0-OH(3) C13H24O2 212.1776300000 CSID: 4472174/CID: 15089800/C(CC(CCCCCCC(CC)C)O)(O)=O in: NOR00857 -beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192710000 CSID: 25938524 -3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0953570000 CSID: 25058696 -N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898780000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 -2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110070000 CSID: 391749 -4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222400000 CSID: 21377788 -3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9697340000 CSID: 9804791 -DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531580000 CSID: 12721 -N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895430000 CSID: 11859621 -D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403410000 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 -dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146640000 CSID: 23110909 -12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1983650000 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 -2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412450000 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 -12-methyltetradecanoic acid aC15:0 C15H28O 224.2140160000 CSID: 20368 -bromophenylalanine Br-Phe C9H8BrNO 224.9789160000 CSID: 77275 -3-amino-tetradecanoic acid/3-amino-isotetradecanoic acid C14:0-NH2(3)/iC14:0-NH2(3) C14H27NO 225.2092640000 CSID: 15571256/CID: 22471993 -3-hydroxy-tetradecanoic acid/3-hydroxy-12-methyl-tridecanoic acid C14:0-OH(3)/iC14:0-OH(3) C14H26O2 226.1932800000 CSID: 15252/CID: 22471995 -tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671480000 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 -N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898780000 CSID: 1925 -beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262630000 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 -3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725450000 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 -tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827980000 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 -thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513840000 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 -D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691420000 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 -N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559910000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 -7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2140160000 CSID: 4895966/CSID: 4445872 -2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568950000 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 -hexadecanoic acid C16:0 C16H30O 238.2296660000 CSID: 960 -beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945660000 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 -3-amino-pentadecanoic acid/3-amino-isopentadecanoic acid/3-amino-12-methyl-tetradecanoic acid C15:0-NH2(3)/iC15:0-NH2(3)/aC15:0-NH2(3) C15H29NO 239.2249150000 CSID: 26283439/C(CC(CCCCCCCCCC(C)C)N)(O)=O in: NOR00784/C(CC(CCCCCCCCC(CC)C)N)(O)=O in: NOR00785 -3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089300000 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 -bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/bOH-Br-Phe C9H8BrNO2 240.9738310000 CSID: 131083/CSID: 19757850 -beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419130000 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 -3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881950000 CID: 22667431/CSID: 28587148 -3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259290000 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 -tri-chloro-2-hydroxy-N-methyl-Leucine/tri-chloro-5-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu/Cl3-5OH-NMe-Leu C7H10Cl3NO2 244.9777130000 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276/C(C(O)=O)(NC)CC(CO)C(Cl)(Cl)Cl in: NOR00511 -N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0509060000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 -2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725450000 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 -3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089300000 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 -3-amino-hexadecanoic acid/3-amino-isohexadecanoic acid C16:0-NH2(3)/iC16:0-NH2(3) C16H31NO 253.2405650000 CSID: 24597602/C(CC(CCCCCCCCCCC(C)C)N)(O)=O in: NOR00793 -3-hydroxy-hexadecanoic acid/3-hydroxy-isohexadecanoic acid C16:0-OH(3)/iC16:0-OH(3) C16H30O2 254.2245800000 CSID: 266538/C(CC(CCCCCCCCCCC(C)C)O)(O)=O in: NOR00897 -D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894810000 CSID: 2128826 -pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 -N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004420000 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 -isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956910000 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 -5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113410000 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 -D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461550000 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 -3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157580000 CSID: 29330841 -5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898150000 CSID: 87339 -9-octadecenoic acid C18:1(9) C18H32O 264.2453160000 CSID: 553123 -8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881950000 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 -3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562150000 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 -3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402300000 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 -3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2194950000 CID: 22348653 -4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619480000 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 -N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054650000 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 -2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847300000 CSID: 643874 -3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2402300000 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 -azotobactins chromophore ChrA C14H11N3O4 285.0749560000 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 -O-demethyl-Adda DMAdda C19H25NO2 299.1885290000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 -D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756110000 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 -actinomycin chromophore ChrAct C16H10N2O5 310.0589710000 CSID: 86817 -3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041790000 CSID: 10471100 -3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364310000 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 -3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627080000 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 -3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576230000 CSID: 29330839 -O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990940000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 -3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783580000 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 -3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045730000 CSID: 29330842 +Ethanolamine Eta C2H5N 43.0421990000 CSID: 13835336 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +pyrrolidone Pyr C4H5N 67.0421990000 CSID: 11530 +dehydroalanine dh-Ala C3H3NO 69.0214640000 CSID: 110510 +pyruvic acid Pya C3H2O2 70.0054790000 CSID: 1031 +butanoic acid C4:0 C4H6O 70.0418650000 CSID: 259 +DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371140000 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 +Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211290000 CSID: 592/CSID: 55423 +Serinol Serol C3H7NO 73.0527640000 CSID: 61591 +2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HseL/NMe-Dha/OH-Pyr C4H5NO 83.0371140000 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 +2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211290000 CSID: 141066 +2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575150000 CSID: 8012 +alpha-formylGlycine aFo-Gly C3H3NO2 85.0163780000 CSID: 28 +N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527640000 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 +isovalinol/valinol Ivalol/Valol C5H11N 85.0891490000 CSID: 8329525/CSID: 71352 +3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367790000 CSID: 428 +2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480130000 CSID: 357 +DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320280000 CSID: 597/CSID: 64231/CSID: 10793 +Sorbic acid C6:2(t2.t4) C6H6O 94.0418650000 CSID: 558605 +methyl-succinimide Me-Suc C5H5NO 95.0371140000 CSID: 122158 +proline carboxamid ProC C5H8N2 96.0687480000 CSID: 479142 +DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527640000 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 +3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731650000 CSID: 7469/CSID: 8552 +N-formyl-Alanine/D-N-formyl-Alanine NFo-Ala/D-NFo-Ala C4H5NO2 99.0320280000 CSID: 72251/CSID: 72251 +DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684140000 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 +Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047990000 CSID: 71362/CSID: 82355 +2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160440000 CSID: 15475591 +Succinic acid Suc C4H4O3 100.0160440000 CSID: 7634 +2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524300000 CSID: 90190/CID: 5289545 +2.4-diaminobutyric acid/D-2.4-diaminobutyric acid/2.3-diaminobutyric acid/(2S.3S)-2.3-diaminobutyric acid/(2R.3R)-2.3-diaminobutyric acid Dab/D-Dab/Dbu/L-Dbu/D-Dbu C4H8N2O 100.0636630000 CSID: 457/CID: 638153/CSID: 4475641/CID: 11768553/PDB: VDL +dehydro-cysteine dhCys C3H3NOS 100.9935340000 CSID: 24784832 +Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476780000 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 +2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940000 CSID: 219301 +DL-Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 +benzoic acid Bz C7H4O 104.0262150000 CSID: 238 +N-methylglutamine NMe-Gln C6H10N2 110.0843980000 CSID: 10652941 +4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320280000 CSID: 366185/CSID: 485 +3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684140000 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 +keto-Leucine/2-epoxy-hexanoic acid/(2E)-5-Hydroxy-3-methyl-2-pentenoic acid k-Leu/C6:0-Ep(2)/OH-MP C6H8O2 112.0524300000 CSID: 69/CSID: 14066572/CSID: 32988805 +Hydroxy-cycloOrnithine/D-Hydroxy-cycloOrnithine OH-cOrn/D-OH-cOrn C5H8N2O 112.0636630000 CSID: 13539649/CSID: 13539649 +heptanoic acid/5-methyl-hexanoic acid C7:0/iC7:0 C7H12O 112.0888150000 CSID: 7803/CID: 12344 +aziridine dicarboxylic acid Azd C4H3NO3 113.0112930000 CSID: 11582505 +3-Hydroxyproline/4-Hydroxyproline/D-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/4OH-Pro/D-4OH-Pro/NFo-D-Abu C5H7NO2 113.0476780000 CSID: 486216/PDB: HYP/CID: 440014/CSID: 486348 +Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840640000 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 +hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316940000 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 +DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429270000 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 +D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680800000 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 +DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793130000 CSID: 380/CSID: 64236 +DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430000 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 +beta-hydroxyvaline/D-beta-hydroxyvaline/N-Methylthreonine/O-Methylthreonine bOH-Val/D-bOH-Val/NMe-Thr/OMe-Thr C5H9NO2 115.0633290000 CSID: 244525/CID: 192763/CSID: 5373925/CSID: 193545 +2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0473440000 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 +2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248350000 CSID: 8233116/CSID: 2074082 +4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425930000 CSID: 3137512 +2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266090000 CSID: 388628 +phenylacetic acid Pha C8H6O 118.0418650000 CSID: 10181341 +4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211290000 CSID: 132 +trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575150000 CSID: 4520024 +hydroxypicolinic acid Hpa C6H3NO2 121.0163780000 CSID: 12827 +oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731650000 CSID: 4472125/CSID: 4944992 +4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476780000 CSID: 2564339/CSID: 10739339/CSID: 87055 +octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044650000 CSID: 370/CSID: 81904 +beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381760000 PDB: UAL +N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline NFo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633290000 CSID: 90479/CSID: 203779/CSID: 3823469 +N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140000 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 +DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585780000 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 +3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837300000 CSID: 277923/CSID: 2340494 +DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630000 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 +DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930000 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 +L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/3OH-Leu/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789790000 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 +2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266090000 CSID: 485839 +Hydroxyasparagine/D-HydroxyAsparagine OH-Asn/D-OH-Asn C4H6N2O3 130.0378420000 CSID: 3670287/CSID: 3670287 +alpha-guanidino Serine gSer C3H6N4O2 130.0490750000 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 +2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0629940000 CSID: 7 +N5-hydroxy ornithine/D-N5-HydroxyOrnithine/hydroxy-beta lysine OH-Orn/D-OH-Orn/OH-bLys C5H10N2O2 130.0742280000 CSID: 148381/C(CC(C(=O)O)N)CNO in: NOR00205/C(NCC(=O)O)(CCN)O in: NOR00634 +Hydroxyaspartic acid/D-Hydroxyaspartic acid OH-Asp/D-OH-Asp C4H5NO4 131.0218580000 CSID: 5232/CSID: 5232 +Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404850000 CSID: 853/CSID: 4450935 +arabinose/lyxose Ara/Lyx C5H8O4 132.0422590000 CSID: 224/CSID: 831 +L-Olivose Oli C6H12O3 132.0786440000 CSID: 164228 +PhenylGlycine/D-PhenylGlycine Ph-Gly/D-ph-Gly C8H7NO 133.0527640000 CSID: 3732/PDB: PG9 +phenylalaninol Pheol C9H11N 133.0891490000 CSID: 69116 +4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087060000 CSID: 111708 +2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9927220000 CSID: 25900403 +2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160440000 CSID: 18 +2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150000 CSID: 24770189/CSID: 10761068 +DL-Histidine His C6H7N3O 137.0589120000 CSID: 752 +dehydropyrrolidone dPyr C6H6N2O2 138.0429270000 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 +acetylproline/2.3-dimethylpyroglutamic acid Ac-Pro/2Me-3Me-pGlu C7H9NO2 139.0633290000 CSID: 285677/CSID: 13080150 +5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837300000 CID: 21197379 +argininal Argal C6H12N4 140.1061960000 CSID: 10655329 +Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201150000 CSID: 7866/CSID: 10015/CSID: 31022 +N-methylchloropyrrole MCP C6H4ClNO 140.9981420000 CSID: 7404981 +N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/NFo-Ile/NFo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789790000 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 +N-dimethyl-leucine/N.beta-dimethyl-leucine/O-acetyl-leucinol/N.O-dimethyl-isoleucine NdMe-Leu/NMe-bMe-Leu/OAc-Leuol/NMe-OMe-Ile C8H15NO 141.1153640000 CSID: 500040/CID: 15385160/CID: 23037829/CSID: 27194495 +beta-methylglutamine/D-beta-methylglutamine bMe-Gln/D-bMe-Gln C6H10N2O2 142.0742280000 CID: 44602399/CSID: 24604116 +3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993800000 CSID: 24791/CSID: 21418738/CSID: 27143447 +3-Methyl-Glutamic acid/Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/2-Aminoadipic acid 3Me-Glu/MeO-Glu/D-MeO-Glu/MeO-D-Glu/Aad C6H9NO3 143.0582430000 CSID: 207514/CSID: 66546/CSID: 66546/CSID: 66546/CSID: 456 +L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/NMe-OH-Ile C7H13NO2 143.0946290000 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 +beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn/D-N2Me-bOH-Asn C5H8N2O3 144.0534920000 CID: 22592766/CSID: 24604117/C(C(=O)O)(N)C(C(=O)NC)O in: NOR00669 +methoxyaspartic acid OMe-Asp C5H7NO4 145.0375080000 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 +3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738930000 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 +L-rhamnose Rha C6H10O4 146.0579090000 CSID: 190747 +Methionine-S-oxide O-Met C5H9NO2S 147.0353990000 CSID: 824 +Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450920000 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 +DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684140000 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 +2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160440000 CSID: 348 +Phenyl-lactate/D-Phenyl-lactate Ph-Lac/D-Ph-Lac C9H8O2 148.0524300000 CSID: 3715/CID: 643327 +HydroxyPhenylGlycine/D-HydroxyPhenylGlycine Hpg/D-Hpg C8H7NO2 149.0476780000 CSID: 83189/CID: 89853 +2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044650000 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 +cysteic acid/D-cysteic acid CysA/D-CysA C3H5NO4S 150.9939280000 PDB: OCS/PDB: 00C +D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433430000 CSID: 88776 +3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997140000 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 +2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837300000 CSID: 9964309 +2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201150000 CID: 17824924 +Hydroxyhistidine OH-His C6H7N3O2 153.0538260000 CSID: 379547 +N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153640000 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 +capreomycidine/enduracididine/D-enduracididine Cap/End/D-End C6H10N4O 154.0854610000 CSID: 3818574/CSID: 24775830/CSID: 24775830 +decanoic acid/isodecanoic acid/7-methylnonanoic acid C10:0/iC10:0/aC10:0 C10H18O 154.1357650000 CSID: 2863/CID: 111470/CSID: 4471754 +Alanine-thiazole Ala-Thz C6H7N2OS 155.0279090000 CSID: 23916434 +N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946290000 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 +2-Aminononanoic acid Me-AOA C9H17NO 155.1310140000 CSID: 198341 +2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323630000 CSID: 87301 +N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534920000 CSID: 2106926 +hydroxyisovalerylpropionyl Hip C8H12O3 156.0786440000 CID: 18942657 +3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898780000 CSID: 21376706 +DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110000 PDB: ARG/PDB: DAR/CSID: 6082 +3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150300000 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 +N-trimethyl-leucine NtMe-Leu C9H18NO 156.1388390000 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 +Citrulline/D-Citrulline Cit/D-Cit C6H11N3O2 157.0851270000 CSID: 810/CID: 637599 +isostatine/statine Ist/Sta C8H15NO2 157.1102790000 CSID: 19578058/CSID: 2632509 +N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691420000 PDB: FHO/PDB: FH7 +alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531580000 CID: 22326384 +N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684140000 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 +O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735590000 CSID: 4352115 +N-Methyl-Phenylalanine/D-N-Methyl-Phenylalanine/3-methylphenylalanine/Homophenylalanine NMe-Phe/D-NMe-Phe/3Me-Phe/Hph C10H11NO 161.0840640000 PDB: MEA/PDB: ZAE/PDB: APD/CSID: 92605 +Hexose/L-glucose/D-Glucose Hexose/Glc/D-Glc C6H10O5 162.0528230000 CSID: 23139/CSID: 201/PDB: GLC +N-hydroxy-dehydro-HydroxyPhenylGlycine/D-N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg/D-OH-dHpg C8H5NO3 163.0269430000 CID: 20339127/C(C(=O)O)(C1=CC=C(C=C1)O)=NO in: NOR00822 +Methionine sulfone O2-Met C5H9NO3S 163.0303140000 CSID: 63154 +phosphinothricin PT C5H10NO3P 163.0398300000 CSID: 4630 +Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633290000 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 +4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473440000 CID: 9378 +propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585780000 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 +3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748200000 CID: 21295133 +3.5-dihydroxyphenylglycine/D-3.5-dihydroxyphenylglycine Dhpg/D-Dhpg C8H7NO3 165.0425930000 PDB: D3P/PDB: D3P +cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854610000 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 +2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993800000 CSID: 29330001 +2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946290000 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 +3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310140000 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 +1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357340000 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 +2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150300000 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 +9-methyldecanoic acid/8-methyldecanoic acid iC11:0/aC11:0 C11H20O 168.1514150000 CSID: 4471714/CID: 21813 +4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102790000 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 +5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803760000 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 +hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942940000 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 +homoarginine Har C7H14N4O 170.1167610000 CSID: 8732 +3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid/2.4-dimethyl-3-hydroxyisooctanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3)/iC8:0-Me(2.4)-OH(3) C10H18O2 170.1306800000 CSID: 24790/CSID: 9587708/CSID: 8949283/CSID: 25944197 +N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895430000 CSID: 11856685 +N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid dDil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259290000 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 +N-acetyl-HydroxyOrnithine/D-N-acetyl-HydroxyOrnithine/N2-acetyl-N5-hydroxy-L-ornithine Ac-OH-Orn/D-Ac-OH-Orn/N2Ac-OH-Orn C7H12N2O3 172.0847920000 PDB: AHO/CSID: 3670289/CSID: 0 +tryptophanol Trpol C11H12N2 172.1000480000 CSID: 10234 +N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591700000 CSID: 21926880 +beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0666990000 CSID: 29322228 +alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997140000 CSID: 262061 +Homotyrosine/N-methyltyrosine/beta-hydroxy-N-Methyl-Phenylalanine Hty/NMe-Tyr/bOH-NMe-Phe C10H11NO2 177.0789790000 CSID: 3365526/CSID: 453342/CSID: 14028021 +propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742280000 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 +2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357650000 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 +beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine bOH-Tyr/diOH-Phe C9H9NO3 179.0582430000 CSID: 13930867/CSID: 813 +proline-thiazole Pro-Thz C8H8N2OS 180.0357340000 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 +2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514150000 CSID: 4471802 +Anticapsin Aca C9H11NO3 181.0738930000 CSID: 2796855 +D-homoarginine D-Har C7H10N4O2 182.0803760000 CSID: 53295 +vinylogous arginine v-Arg C8H14N4O 182.1167610000 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 +dodecanoic acid/isododecanoic acid C12:0/iC12:0 C12H22O 182.1670650000 CSID: 3756/CID: 75942 +3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087060000 CSID: 3817439 +N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259290000 CSID: 9944222/CSID: 16281719 +2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636630000 CSID: 7991355 +ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847920000 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 +alpha-ketoarginine k-Arg C7H12N4O2 184.0960260000 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 +3-hydroxy-undecanoic acid/3-hydroxy-isoundecanoic acid/3-hydroxy-2-methyl-decanoic acid/3-hydroxy-4-methyl-decanoic acid C11:0-OH(3)/iC11:0-OH(3)/C10:0-Me(2)-OH(3)/C10:0-Me(4)-OH(3) C11H20O2 184.1463300000 CSID: 2340495/CC(C)CCCCCC(CC(=O)O)O in: NOR00398/CSID: 13775620/CSID: 28533406 +Dolapyrrolidone Dpy C12H11NO 185.0840640000 CSID: 8735462 +Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415790000 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 +DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793130000 CSID: 1116/CSID: 8707 +hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116760000 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 +dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633290000 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 +3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909400000 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 +vinylogous tyrosine/N-acetylphenylalanine v-Tyr/Ac-Phe C11H11NO2 189.0789790000 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 +kynurenine/D-kynurenine Kyn/D-Kyn C10H10N2O2 190.0742280000 CSID: 823/CID: 1152206 +coronafacic acid CFA C12H14O2 190.0993800000 CSID: 13300082 +N-methyl-4-methylamino-phenylalanine/N.O-dimethyl-tyrosinecarboxamid NMe-MeA-Phe/NMe-OMe-TyrC C11H14N2O 190.1106130000 CID: 21137790/CID: 19003692 +alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/3-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine/D-N.O-dimethyl-tyrosine Ahv/NMe-Hty/3Me-Hty/e-Tyr/NMe-OMe-Tyr/D-NMe-OMe-Tyr C11H13NO2 191.0946290000 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C1=CC(=CC=C1CC(C(C(=O)O)N)C)O in: NOR00265/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327/CID: 18925327 +10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514150000 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 +di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061200000 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 +beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738930000 CSID: 16174140 +O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248940000 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 +methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419130000 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 +11-methyl-3-dodecenoic acid/10-methyl-3-dodecenoic acid iC13:1(3)/aC13:1(3) C13H22O 194.1670650000 C(CC=CCCCCCCC(C)C)(O)=O in: NOR00296/C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 +di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217700000 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 +3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463300000 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 +11-methyldodecanoic acid/10-methyldodecanoic acid iC13:0/aC13:0 C13H24O 196.1827150000 CID: 33002/CSID: 2282934 +chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243570000 CSID: 106510 +2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051930000 CSID: 11345228 +4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1415790000 CSID: 4450325 +3-hydroxy-dodecanoic acid/3-hydroxy-isododecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/iC12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619800000 CSID: 85026/CID: 15089799/CSID: 13775586 +9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1208430000 CSID: 25942012 +N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797070000 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 +N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949630000 CSID: 88584 +5-hydroxytryptophan/phototryptophan OH-Trp/pTrp C11H10N2O2 202.0742280000 CSID: 141/CID: 10331043 +N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262630000 CSID: 27594543 +vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738930000 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 +alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1102790000 CSID: 9681632 +N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361280000 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 +3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484070000 CSID: 205676 +7-tetradecenoic acid/12-methyl-3-tridecenoic acid C14:1(7)/iC14:1(3) C14H24O 208.1827150000 CSID: 10722652/PDB: LNG +D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041720000 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 +propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0462980000 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 +5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255940000 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 +tetradecanoic acid/12-methyl-tridecanoic acid C14:0/iC14:0 C14H26O 210.1983650000 PDB: MYR/CID: 520298 +Chloro-N-methyl-tyrosine/D-3-chloro-N-methyl-Tyrosine Cl-NMe-Tyr/D-Cl-NMe-Tyr C10H10ClNO2 211.0400070000 PDB: CNT/C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)Cl in: NOR00614 +3-amino-tridecanoic acid C13:0-NH2(3) C13H25NO 211.1936140000 CSID: 26283438 +3-hydroxy-tridecanoic acid/3-hydroxy-isotridecanoic acid/3-hydroxy-10-methyl-dodecanoic acid C13:0-OH(3)/iC13:0-OH(3)/aC13:0-OH(3) C13H24O2 212.1776300000 CSID: 4472174/CID: 15089800/C(CC(CCCCCCC(CC)C)O)(O)=O in: NOR00857 +beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192710000 CSID: 25938524 +3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0953570000 CSID: 25058696 +N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898780000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 +2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110070000 CSID: 391749 +4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222400000 CSID: 21377788 +3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9697340000 CSID: 9804791 +DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531580000 CSID: 12721 +N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895430000 CSID: 11859621 +D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403410000 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 +dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146640000 CSID: 23110909 +12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1983650000 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 +2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412450000 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 +12-methyltetradecanoic acid aC15:0 C15H28O 224.2140160000 CSID: 20368 +bromophenylalanine Br-Phe C9H8BrNO 224.9789160000 CSID: 77275 +3-amino-tetradecanoic acid/3-amino-isotetradecanoic acid C14:0-NH2(3)/iC14:0-NH2(3) C14H27NO 225.2092640000 CSID: 15571256/CID: 22471993 +3-hydroxy-tetradecanoic acid/3-hydroxy-12-methyl-tridecanoic acid C14:0-OH(3)/iC14:0-OH(3) C14H26O2 226.1932800000 CSID: 15252/CID: 22471995 +tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671480000 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 +N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898780000 CSID: 1925 +beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262630000 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 +3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725450000 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 +tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827980000 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 +thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513840000 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 +D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691420000 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 +N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559910000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 +7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2140160000 CSID: 4895966/CSID: 4445872 +2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568950000 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 +hexadecanoic acid C16:0 C16H30O 238.2296660000 CSID: 960 +beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945660000 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 +3-amino-pentadecanoic acid/3-amino-isopentadecanoic acid/3-amino-12-methyl-tetradecanoic acid C15:0-NH2(3)/iC15:0-NH2(3)/aC15:0-NH2(3) C15H29NO 239.2249150000 CSID: 26283439/C(CC(CCCCCCCCCC(C)C)N)(O)=O in: NOR00784/C(CC(CCCCCCCCC(CC)C)N)(O)=O in: NOR00785 +3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089300000 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 +bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/bOH-Br-Phe C9H8BrNO2 240.9738310000 CSID: 131083/CSID: 19757850 +beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419130000 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 +3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881950000 CID: 22667431/CSID: 28587148 +3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259290000 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 +tri-chloro-2-hydroxy-N-methyl-Leucine/tri-chloro-5-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu/Cl3-5OH-NMe-Leu C7H10Cl3NO2 244.9777130000 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276/C(C(O)=O)(NC)CC(CO)C(Cl)(Cl)Cl in: NOR00511 +N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0509060000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 +2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725450000 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 +3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089300000 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 +3-amino-hexadecanoic acid/3-amino-isohexadecanoic acid C16:0-NH2(3)/iC16:0-NH2(3) C16H31NO 253.2405650000 CSID: 24597602/C(CC(CCCCCCCCCCC(C)C)N)(O)=O in: NOR00793 +3-hydroxy-hexadecanoic acid/3-hydroxy-isohexadecanoic acid C16:0-OH(3)/iC16:0-OH(3) C16H30O2 254.2245800000 CSID: 266538/C(CC(CCCCCCCCCCC(C)C)O)(O)=O in: NOR00897 +D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894810000 CSID: 2128826 +pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 +N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004420000 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 +isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956910000 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 +5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113410000 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 +D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461550000 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 +3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157580000 CSID: 29330841 +5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898150000 CSID: 87339 +9-octadecenoic acid C18:1(9) C18H32O 264.2453160000 CSID: 553123 +8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881950000 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 +3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562150000 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 +3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402300000 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 +3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2194950000 CID: 22348653 +4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619480000 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 +N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054650000 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 +2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847300000 CSID: 643874 +3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2402300000 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 +azotobactins chromophore ChrA C14H11N3O4 285.0749560000 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 +O-demethyl-Adda DMAdda C19H25NO2 299.1885290000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 +D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756110000 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 +actinomycin chromophore ChrAct C16H10N2O5 310.0589710000 CSID: 86817 +3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041790000 CSID: 10471100 +3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364310000 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 +3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627080000 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 +3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576230000 CSID: 29330839 +O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990940000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 +3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783580000 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 +3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045730000 CSID: 29330842 diff --git a/CycloBranch/BrickDatabases/db291.txt b/CycloBranch/BrickDatabases/db291.txt index 36ef16b..d529a12 100644 --- a/CycloBranch/BrickDatabases/db291.txt +++ b/CycloBranch/BrickDatabases/db291.txt @@ -1,291 +1,291 @@ -Ethanolamine Eta C2H5N 43.0421991657 CSID: 13835336 -Glycine Gly C2H3NO 57.0214637236 CSID: 730 -pyrrolidone Pyr C4H5N 67.0421991657 CSID: 11530 -dehydroalanine dh-Ala C3H3NO 69.0214637236 CSID: 110510 -pyruvic acid Pya C3H2O2 70.0054793084 CSID: 1031 -butanoic acid C4:0 C4H6O 70.0418648147 CSID: 259 -DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371137878 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 -Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211293726 CSID: 592/CSID: 55423 -Serinol Serol C3H7NO 73.0527638520 CSID: 61591 -2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HseL/NMe-Dha/OH-Pyr C4H5NO 83.0371137878 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 -2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211293726 CSID: 141066 -2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575148789 CSID: 8012 -alpha-formylGlycine aFo-Gly C3H3NO2 85.0163783457 CSID: 28 -N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527638520 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 -isovalinol/valinol Ivalol/Valol C5H11N 85.0891493583 CSID: 8329525/CSID: 71352 -3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367794368 CSID: 428 -2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480128251 CSID: 357 -DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320284099 CSID: 597/CSID: 64231/CSID: 10793 -Sorbic acid C6:2(t2.t4) C6H6O 94.0418648147 CSID: 558605 -methyl-succinimide Me-Suc C5H5NO 95.0371137878 CSID: 122158 -proline carboxamid ProC C5H8N2 96.0687482672 CSID: 479142 -DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527638520 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 -3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731649431 CSID: 7469/CSID: 8552 -N-formyl-Alanine/D-N-formyl-Alanine NFo-Ala/D-NFo-Ala C4H5NO2 99.0320284099 CSID: 72251/CSID: 72251 -DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684139162 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 -Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047994225 CSID: 71362/CSID: 82355 -2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160439947 CSID: 15475591 -Succinic acid Suc C4H4O3 100.0160439947 CSID: 7634 -2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524295010 CSID: 90190/CID: 5289545 -2.4-diaminobutyric acid/D-2.4-diaminobutyric acid/2.3-diaminobutyric acid/(2S.3S)-2.3-diaminobutyric acid/(2R.3R)-2.3-diaminobutyric acid Dab/D-Dab/Dbu/L-Dbu/D-Dbu C4H8N2O 100.0636628893 CSID: 457/CID: 638153/CSID: 4475641/CID: 11768553/PDB: VDL -dehydro-cysteine dhCys C3H3NOS 100.9935344136 CSID: 24784832 -Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476784741 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 -2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940589 CSID: 219301 -DL-Cysteine Cys C3H5NOS 103.0091844778 CSID: 574 -benzoic acid Bz C7H4O 104.0262147505 CSID: 238 -N-methylglutamine NMe-Gln C6H10N2 110.0843983314 CSID: 10652941 -4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320284099 CSID: 366185/CSID: 485 -3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684139162 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 -keto-Leucine/2-epoxy-hexanoic acid k-Leu/C6:0-Ep(2) C6H8O2 112.0524295010 CSID: 69/CSID: 14066572 -Hydroxy-cycloOrnithine/D-Hydroxy-cycloOrnithine OH-cOrn/D-OH-cOrn C5H8N2O 112.0636628893 CSID: 13539649/CSID: 13539649 -heptanoic acid/5-methyl-hexanoic acid C7:0/iC7:0 C7H12O 112.0888150073 CSID: 7803/CID: 12344 -aziridine dicarboxylic acid Azd C4H3NO3 113.0112929678 CSID: 11582505 -3-Hydroxyproline/4-Hydroxyproline/D-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/4OH-Pro/D-4OH-Pro/NFo-D-Abu C5H7NO2 113.0476784741 CSID: 486216/PDB: HYP/CID: 440014/CSID: 486348 -Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840639804 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 -hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316940589 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 -DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429274472 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 -D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680795652 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 -DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793129535 CSID: 380/CSID: 64236 -DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430320 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 -beta-hydroxyvaline/D-beta-hydroxyvaline/N-Methylthreonine/O-Methylthreonine bOH-Val/D-bOH-Val/NMe-Thr/OMe-Thr C5H9NO2 115.0633285383 CSID: 244525/CID: 192763/CSID: 5373925/CSID: 193545 -2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0473441231 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 -2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248345420 CSID: 8233116/CSID: 2074082 -4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425930962 CSID: 3137512 -2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266086810 CSID: 388628 -phenylacetic acid Pha C8H6O 118.0418648147 CSID: 10181341 -4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211293726 CSID: 132 -trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575148789 CSID: 4520024 -hydroxypicolinic acid Hpa C6H3NO2 121.0163783457 CSID: 12827 -oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731649431 CSID: 4472125/CSID: 4944992 -4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476784741 CSID: 2564339/CSID: 10739339/CSID: 87055 -octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044650715 CSID: 370/CSID: 81904 -beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381764203 PDB: UAL -N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline NFo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633285383 CSID: 90479/CSID: 203779/CSID: 3823469 -N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140446 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 -DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585775114 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 -3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837296294 CSID: 277923/CSID: 2340494 -DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630177 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 -DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930962 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 -L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/3OH-Leu/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789786025 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 -2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266086810 CSID: 485839 -Hydroxyasparagine/D-HydroxyAsparagine OH-Asn/D-OH-Asn C4H6N2O3 130.0378420693 CSID: 3670287/CSID: 3670287 -alpha-guanidino Serine gSer C3H6N4O2 130.0490754576 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 -2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0629941873 CSID: 7 -N5-hydroxy ornithine/D-N5-HydroxyOrnithine/hydroxy-beta lysine OH-Orn/D-OH-Orn/OH-bLys C5H10N2O2 130.0742275756 CSID: 148381/C(CC(C(=O)O)N)CNO in: NOR00205/C(NCC(=O)O)(CCN)O in: NOR00634 -Hydroxyaspartic acid/D-Hydroxyaspartic acid OH-Asp/D-OH-Asp C4H5NO4 131.0218576541 CSID: 5232/CSID: 5232 -Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404846062 CSID: 853/CSID: 4450935 -arabinose/lyxose Ara/Lyx C5H8O4 132.0422587452 CSID: 224/CSID: 831 -L-Olivose Oli C6H12O3 132.0786442515 CSID: 164228 -PhenylGlycine/D-PhenylGlycine Ph-Gly/D-ph-Gly C8H7NO 133.0527638520 CSID: 3732/PDB: PG9 -phenylalaninol Pheol C9H11N 133.0891493583 CSID: 69116 -4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087064420 CSID: 111708 -2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9927220268 CSID: 25900403 -2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160439947 CSID: 18 -2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150073 CSID: 24770189/CSID: 10761068 -DL-Histidine His C6H7N3O 137.0589118624 CSID: 752 -dehydropyrrolidone dPyr C6H6N2O2 138.0429274472 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 -acetylproline/2.3-dimethylpyroglutamic acid Ac-Pro/2Me-3Me-pGlu C7H9NO2 139.0633285383 CSID: 285677/CSID: 13080150 -5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837296294 CID: 21197379 -argininal Argal C6H12N4 140.1061964060 CSID: 10655329 -Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201151357 CSID: 7866/CSID: 10015/CSID: 31022 -N-methylchloropyrrole MCP C6H4ClNO 140.9981417557 CSID: 7404981 -N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/NFo-Ile/NFo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789786025 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 -N-dimethyl-leucine/N.beta-dimethyl-leucine/O-acetyl-leucinol/N.O-dimethyl-isoleucine NdMe-Leu/NMe-bMe-Leu/OAc-Leuol/NMe-OMe-Ile C8H15NO 141.1153641088 CSID: 500040/CID: 15385160/CID: 23037829/CSID: 27194495 -beta-methylglutamine/D-beta-methylglutamine bMe-Gln/D-bMe-Gln C6H10N2O2 142.0742275756 CID: 44602399/CSID: 24604116 -3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993796936 CSID: 24791/CSID: 21418738/CSID: 27143447 -3-Methyl-Glutamic acid/Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/2-Aminoadipic acid 3Me-Glu/MeO-Glu/D-MeO-Glu/MeO-D-Glu/Aad C6H9NO3 143.0582431604 CSID: 207514/CSID: 66546/CSID: 66546/CSID: 66546/CSID: 456 -L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/NMe-OH-Ile C7H13NO2 143.0946286667 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 -beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn/D-N2Me-bOH-Asn C5H8N2O3 144.0534921335 CID: 22592766/CSID: 24604117/C(C(=O)O)(N)C(C(=O)NC)O in: NOR00669 -methoxyaspartic acid OMe-Asp C5H7NO4 145.0375077183 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 -3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738932246 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 -L-rhamnose Rha C6H10O4 146.0579088094 CSID: 190747 -Methionine-S-oxide O-Met C5H9NO2S 147.0353992283 CSID: 824 -Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450919483 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 -DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684139162 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 -2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160439947 CSID: 348 -Phenyl-lactate/D-Phenyl-lactate Ph-Lac/D-Ph-Lac C9H8O2 148.0524295010 CSID: 3715/CID: 643327 -HydroxyPhenylGlycine/D-HydroxyPhenylGlycine Hpg/D-Hpg C8H7NO2 149.0476784741 CSID: 83189/CID: 89853 -2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044650715 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 -cysteic acid/D-cysteic acid CysA/D-CysA C3H5NO4S 150.9939283441 PDB: OCS/PDB: 00C -D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433428199 CSID: 88776 -3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997140446 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 -2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837296294 CSID: 9964309 -2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201151357 CID: 17824924 -Hydroxyhistidine OH-His C6H7N3O2 153.0538264845 CSID: 379547 -N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153641088 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 -capreomycidine/enduracididine/D-enduracididine Cap/End/D-End C6H10N4O 154.0854609639 CSID: 3818574/CSID: 24775830/CSID: 24775830 -decanoic acid/isodecanoic acid/7-methylnonanoic acid C10:0/iC10:0/aC10:0 C10H18O 154.1357651999 CSID: 2863/CID: 111470/CSID: 4471754 -Alanine-thiazole Ala-Thz C6H7N2OS 155.0279085472 CSID: 23916434 -N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946286667 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 -2-Aminononanoic acid Me-AOA C9H17NO 155.1310141730 CSID: 198341 -2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323627609 CSID: 87301 -N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534921335 CSID: 2106926 -hydroxyisovalerylpropionyl Hip C8H12O3 156.0786442515 CID: 18942657 -3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898776398 CSID: 21376706 -DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110281 PDB: ARG/PDB: DAR/CSID: 6082 -3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150297578 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 -N-trimethyl-leucine NtMe-Leu C9H18NO 156.1388392051 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 -Citrulline/D-Citrulline Cit/D-Cit C6H11N3O2 157.0851266129 CSID: 810/CID: 637599 -isostatine/statine Ist/Sta C8H15NO2 157.1102787309 CSID: 19578058/CSID: 2632509 -N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691421977 PDB: FHO/PDB: FH7 -alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531577825 CID: 22326384 -N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684139162 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 -O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735588736 CSID: 4352115 -N-Methyl-Phenylalanine/D-N-Methyl-Phenylalanine/3-methylphenylalanine/Homophenylalanine NMe-Phe/D-NMe-Phe/3Me-Phe/Hph C10H11NO 161.0840639804 PDB: MEA/PDB: ZAE/PDB: APD/CSID: 92605 -Hexose/L-glucose/D-Glucose Hexose/Glc/D-Glc C6H10O5 162.0528234315 CSID: 23139/CSID: 201/PDB: GLC -N-hydroxy-dehydro-HydroxyPhenylGlycine/D-N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg/D-OH-dHpg C8H5NO3 163.0269430320 CID: 20339127/C(C(=O)O)(C1=CC=C(C=C1)O)=NO in: NOR00822 -Methionine sulfone O2-Met C5H9NO3S 163.0303138504 CSID: 63154 -phosphinothricin PT C5H10NO3P 163.0398297025 CSID: 4630 -Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633285383 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 -4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473441231 CID: 9378 -propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585775114 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 -3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748197878 CID: 21295133 -3.5-dihydroxyphenylglycine/D-3.5-dihydroxyphenylglycine Dhpg/D-Dhpg C8H7NO3 165.0425930962 PDB: D3P/PDB: D3P -cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854609639 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 -2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993796936 CSID: 29330001 -2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946286667 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 -3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310141730 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 -1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357335793 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 -2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150297578 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 -9-methyldecanoic acid/8-methyldecanoic acid iC11:0/aC11:0 C11H20O 168.1514152641 CSID: 4471714/CID: 21813 -4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102787309 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 -5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803755860 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 -hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942943157 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 -homoarginine Har C7H14N4O 170.1167610923 CSID: 8732 -3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid/2.4-dimethyl-3-hydroxyisooctanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3)/iC8:0-Me(2.4)-OH(3) C10H18O2 170.1306798220 CSID: 24790/CSID: 9587708/CSID: 8949283/CSID: 25944197 -N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895432888 CSID: 11856685 -N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid dDil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259287951 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 -N-acetyl-HydroxyOrnithine/D-N-acetyl-HydroxyOrnithine Ac-OH-Orn/D-Ac-OH-Orn C7H12N2O3 172.0847922619 PDB: AHO/CSID: 3670289 -tryptophanol Trpol C11H12N2 172.1000483956 CSID: 10234 -N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591697236 CSID: 21926880 -beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0666993567 CSID: 29322228 -alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997140446 CSID: 262061 -Homotyrosine/N-methyltyrosine/beta-hydroxy-N-Methyl-Phenylalanine Hty/NMe-Tyr/bOH-NMe-Phe C10H11NO2 177.0789786025 CSID: 3365526/CSID: 453342/CSID: 14028021 -propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742275756 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 -2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357651999 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 -beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine bOH-Tyr/diOH-Phe C9H9NO3 179.0582431604 CSID: 13930867/CSID: 813 -proline-thiazole Pro-Thz C8H8N2OS 180.0357335793 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 -2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514152641 CSID: 4471802 -Anticapsin Aca C9H11NO3 181.0738932246 CSID: 2796855 -D-homoarginine D-Har C7H10N4O2 182.0803755860 CSID: 53295 -vinylogous arginine v-Arg C8H14N4O 182.1167610923 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 -dodecanoic acid/isododecanoic acid C12:0/iC12:0 C12H22O 182.1670653283 CSID: 3756/CID: 75942 -3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087064420 CSID: 3817439 -N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259287951 CSID: 9944222/CSID: 16281719 -2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636628893 CSID: 7991355 -ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847922619 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 -alpha-ketoarginine k-Arg C7H12N4O2 184.0960256502 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 -3-hydroxy-undecanoic acid/3-hydroxy-isoundecanoic acid/3-hydroxy-2-methyl-decanoic acid/3-hydroxy-4-methyl-decanoic acid C11:0-OH(3)/iC11:0-OH(3)/C10:0-Me(2)-OH(3)/C10:0-Me(4)-OH(3) C11H20O2 184.1463298862 CSID: 2340495/CC(C)CCCCCC(CC(=O)O)O in: NOR00398/CSID: 13775620/CSID: 28533406 -Dolapyrrolidone Dpy C12H11NO 185.0840639804 CSID: 8735462 -Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415788593 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 -DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793129535 CSID: 1116/CSID: 8707 -hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116757144 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 -dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633285383 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 -3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909402723 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 -vinylogous tyrosine/N-acetylphenylalanine v-Tyr/Ac-Phe C11H11NO2 189.0789786025 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 -kynurenine/D-kynurenine Kyn/D-Kyn C10H10N2O2 190.0742275756 CSID: 823/CID: 1152206 -coronafacic acid CFA C12H14O2 190.0993796936 CSID: 13300082 -N-methyl-4-methylamino-phenylalanine/N.O-dimethyl-tyrosinecarboxamid NMe-MeA-Phe/NMe-OMe-TyrC C11H14N2O 190.1106130819 CID: 21137790/CID: 19003692 -alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/3-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine/D-N.O-dimethyl-tyrosine Ahv/NMe-Hty/3Me-Hty/e-Tyr/NMe-OMe-Tyr/D-NMe-OMe-Tyr C11H13NO2 191.0946286667 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C1=CC(=CC=C1CC(C(C(=O)O)N)C)O in: NOR00265/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327/CID: 18925327 -10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514152641 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 -di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061199162 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 -beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738932246 CSID: 16174140 -O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248941215 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 -methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419132103 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 -11-methyl-3-dodecenoic acid/10-methyl-3-dodecenoic acid iC13:1(3)/aC13:1(3) C13H22O 194.1670653283 C(CC=CCCCCCCC(C)C)(O)=O in: NOR00296/C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 -di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217699804 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 -3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463298862 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 -11-methyldodecanoic acid/10-methyldodecanoic acid iC13:0/aC13:0 C13H24O 196.1827153925 CID: 33002/CSID: 2282934 -chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243565062 CSID: 106510 -2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051933530 CSID: 11345228 -4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1415788593 CSID: 4450325 -3-hydroxy-dodecanoic acid/3-hydroxy-isododecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/iC12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619799504 CSID: 85026/CID: 15089799/CSID: 13775586 -9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1208434172 CSID: 25942012 -N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797068840 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 -N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949630177 CSID: 88584 -5-hydroxytryptophan/phototryptophan OH-Trp/pTrp C11H10N2O2 202.0742275756 CSID: 141/CID: 10331043 -N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262631461 CSID: 27594543 -vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738932246 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 -alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1102787309 CSID: 9681632 -N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361275098 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 -3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484067556 CSID: 205676 -7-tetradecenoic acid/12-methyl-3-tridecenoic acid C14:1(7)/iC14:1(3) C14H24O 208.1827153925 CSID: 10722652/PDB: LNG -D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041724777 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 -propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0462982656 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 -5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255944441 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 -tetradecanoic acid/12-methyl-tridecanoic acid C14:0/iC14:0 C14H26O 210.1983654567 PDB: MYR/CID: 520298 -Chloro-N-methyl-tyrosine/D-3-chloro-N-methyl-Tyrosine Cl-NMe-Tyr/D-Cl-NMe-Tyr C10H10ClNO2 211.0400065704 PDB: CNT/C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)Cl in: NOR00614 -3-amino-tridecanoic acid C13:0-NH2(3) C13H25NO 211.1936144298 CSID: 26283438 -3-hydroxy-tridecanoic acid/3-hydroxy-isotridecanoic acid/3-hydroxy-10-methyl-dodecanoic acid C13:0-OH(3)/iC13:0-OH(3)/aC13:0-OH(3) C13H24O2 212.1776300146 CSID: 4472174/CID: 15089800/C(CC(CCCCCCC(CC)C)O)(O)=O in: NOR00857 -beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192711283 CSID: 25938524 -3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0953569482 CSID: 25058696 -N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898776398 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 -2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110070124 CSID: 391749 -4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222404007 CSID: 21377788 -3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9697344099 CSID: 9804791 -DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531577825 CSID: 12721 -N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895432888 CSID: 11859621 -D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403409214 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 -dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146637862 CSID: 23110909 -12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1983654567 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 -2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412445083 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 -12-methyltetradecanoic acid aC15:0 C15H28O 224.2140155209 CSID: 20368 -bromophenylalanine Br-Phe C9H8BrNO 224.9789158841 CSID: 77275 -3-amino-tetradecanoic acid/3-amino-isotetradecanoic acid C14:0-NH2(3)/iC14:0-NH2(3) C14H27NO 225.2092644940 CSID: 15571256/CID: 22471993 -3-hydroxy-tetradecanoic acid/3-hydroxy-12-methyl-tridecanoic acid C14:0-OH(3)/iC14:0-OH(3) C14H26O2 226.1932800788 CSID: 15252/CID: 22471995 -tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671478841 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 -N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898776398 CSID: 1925 -beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262631461 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 -3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725446367 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 -tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827979483 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 -thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513836435 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 -D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691421977 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 -N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559909856 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 -7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2140155209 CSID: 4895966/CSID: 4445872 -2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568945725 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 -hexadecanoic acid C16:0 C16H30O 238.2296655851 CSID: 960 -beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945659483 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 -3-amino-pentadecanoic acid/3-amino-isopentadecanoic acid/3-amino-12-methyl-tetradecanoic acid C15:0-NH2(3)/iC15:0-NH2(3)/aC15:0-NH2(3) C15H29NO 239.2249145582 CSID: 26283439/C(CC(CCCCCCCCCC(C)C)N)(O)=O in: NOR00784/C(CC(CCCCCCCCC(CC)C)N)(O)=O in: NOR00785 -3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089301430 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 -bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/bOH-Br-Phe C9H8BrNO2 240.9738305062 CSID: 131083/CSID: 19757850 -beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419132103 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 -3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881947009 CID: 22667431/CSID: 28587148 -3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259287951 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 -tri-chloro-2-hydroxy-N-methyl-Leucine/tri-chloro-5-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu/Cl3-5OH-NMe-Leu C7H10Cl3NO2 244.9777125704 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276/C(C(O)=O)(NC)CC(CO)C(Cl)(Cl)Cl in: NOR00511 -N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0509056077 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 -2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725446367 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 -3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089301430 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 -3-amino-hexadecanoic acid/3-amino-isohexadecanoic acid C16:0-NH2(3)/iC16:0-NH2(3) C16H31NO 253.2405646224 CSID: 24597602/C(CC(CCCCCCCCCCC(C)C)N)(O)=O in: NOR00793 -3-hydroxy-hexadecanoic acid/3-hydroxy-isohexadecanoic acid C16:0-OH(3)/iC16:0-OH(3) C16H30O2 254.2245802072 CSID: 266538/C(CC(CCCCCCCCCCC(C)C)O)(O)=O in: NOR00897 -D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894805704 CSID: 2128826 -pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800412350 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 -N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004423261 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 -isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956912992 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 -5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113413634 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 -D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461545808 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 -3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157580393 CSID: 29330841 -5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898149214 CSID: 87339 -9-octadecenoic acid C18:1(9) C18H32O 264.2453156493 CSID: 553123 -8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881947009 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 -3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562146866 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 -3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402302714 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 -3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2194948293 CID: 22348653 -4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619483298 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 -N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054649856 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 -2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847295435 CSID: 643874 -3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2402302714 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 -azotobactins chromophore ChrA C14H11N3O4 285.0749558571 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 -O-demethyl-Adda DMAdda C19H25NO2 299.1885290519 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 -D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756105704 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 -actinomycin chromophore ChrAct C16H10N2O5 310.0589714419 CSID: 86817 -3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041791161 CSID: 10471100 -3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364307630 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 -3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627082319 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 -3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576228540 CSID: 29330839 -O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990937382 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 -3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783582961 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 -3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045730466 CSID: 29330842 -norspermidine NSpd C6H15N3 129.1265974971 CID: 5942 -spermidine Spd C7H17N3 143.1422475613 PDB: SPD -guanylspermidine GSpd C8H19N5 185.1640456359 CID: 3082086 -formyl group CO CO 27.9949146221 PDB: FOR +Ethanolamine Eta C2H5N 43.0421990000 CSID: 13835336 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +pyrrolidone Pyr C4H5N 67.0421990000 CSID: 11530 +dehydroalanine dh-Ala C3H3NO 69.0214640000 CSID: 110510 +pyruvic acid Pya C3H2O2 70.0054790000 CSID: 1031 +butanoic acid C4:0 C4H6O 70.0418650000 CSID: 259 +DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371140000 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 +Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211290000 CSID: 592/CSID: 55423 +Serinol Serol C3H7NO 73.0527640000 CSID: 61591 +2.3-dehydro-2-aminobutyric acid/homoserine lactone/N-Methyl-dehydroalanine/hydroxy pyrrolidone dhAbu/HseL/NMe-Dha/OH-Pyr C4H5NO 83.0371140000 CSID: 4952645/CSID: 66194/CSID: 118845/CSID: 134682 +2-hydroxy-3-butenoic acid C4:1(3)-OH(2) C4H4O2 84.0211290000 CSID: 141066 +2-methyl-butanoic acid C4:0-Me(2) C5H8O 84.0575150000 CSID: 8012 +alpha-formylGlycine aFo-Gly C3H3NO2 85.0163780000 CSID: 28 +N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527640000 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 +isovalinol/valinol Ivalol/Valol C5H11N 85.0891490000 CSID: 8329525/CSID: 71352 +3-hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367790000 CSID: 428 +2.3-Diaminopropionic acid Dpr C3H6N2O 86.0480130000 CSID: 357 +DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320280000 CSID: 597/CSID: 64231/CSID: 10793 +Sorbic acid C6:2(t2.t4) C6H6O 94.0418650000 CSID: 558605 +methyl-succinimide Me-Suc C5H5NO 95.0371140000 CSID: 122158 +proline carboxamid ProC C5H8N2 96.0687480000 CSID: 479142 +DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527640000 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 +3-methylvaleric acid/hexanoic acid Me-Vaa/C6:0 C6H10O 98.0731650000 CSID: 7469/CSID: 8552 +N-formyl-Alanine/D-N-formyl-Alanine NFo-Ala/D-NFo-Ala C4H5NO2 99.0320280000 CSID: 72251/CSID: 72251 +DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684140000 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 +Leucinol/Isoleucinol Leuol/Ileol C6H13N 99.1047990000 CSID: 71362/CSID: 82355 +2-hydroxy-3-epoxy-butanoic acid C4:0-OH(2)-Ep(3) C4H4O3 100.0160440000 CSID: 15475591 +Succinic acid Suc C4H4O3 100.0160440000 CSID: 7634 +2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524300000 CSID: 90190/CID: 5289545 +2.4-diaminobutyric acid/D-2.4-diaminobutyric acid/2.3-diaminobutyric acid/(2S.3S)-2.3-diaminobutyric acid/(2R.3R)-2.3-diaminobutyric acid Dab/D-Dab/Dbu/L-Dbu/D-Dbu C4H8N2O 100.0636630000 CSID: 457/CID: 638153/CSID: 4475641/CID: 11768553/PDB: VDL +dehydro-cysteine dhCys C3H3NOS 100.9935340000 CSID: 24784832 +Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476780000 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 +2.3-dihydroxy-butanoic acid C4:0-OH(2.3) C4H6O3 102.0316940000 CSID: 219301 +DL-Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 +benzoic acid Bz C7H4O 104.0262150000 CSID: 238 +N-methylglutamine NMe-Gln C6H10N2 110.0843980000 CSID: 10652941 +4-oxo-proline/pyroglutamic acid 4oxo-Pro/pGlu C5H5NO2 111.0320280000 CSID: 366185/CSID: 485 +3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684140000 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 +keto-Leucine/2-epoxy-hexanoic acid k-Leu/C6:0-Ep(2) C6H8O2 112.0524300000 CSID: 69/CSID: 14066572 +Hydroxy-cycloOrnithine/D-Hydroxy-cycloOrnithine OH-cOrn/D-OH-cOrn C5H8N2O 112.0636630000 CSID: 13539649/CSID: 13539649 +heptanoic acid/5-methyl-hexanoic acid C7:0/iC7:0 C7H12O 112.0888150000 CSID: 7803/CID: 12344 +aziridine dicarboxylic acid Azd C4H3NO3 113.0112930000 CSID: 11582505 +3-Hydroxyproline/4-Hydroxyproline/D-Hydroxyproline/2-formamidobutanoic acid 3OH-Pro/4OH-Pro/D-4OH-Pro/NFo-D-Abu C5H7NO2 113.0476780000 CSID: 486216/PDB: HYP/CID: 440014/CSID: 486348 +Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840640000 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 +hydroxyacetyl propionyl/pentanedioic acid Hap/Pda C5H6O3 114.0316940000 C(C(C(CO)=O)C)(=O)O in CSID: 10477731/CSID: 723 +DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429270000 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 +D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680800000 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 +DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793130000 CSID: 380/CSID: 64236 +DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430000 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 +beta-hydroxyvaline/D-beta-hydroxyvaline/N-Methylthreonine/O-Methylthreonine bOH-Val/D-bOH-Val/NMe-Thr/OMe-Thr C5H9NO2 115.0633290000 CSID: 244525/CID: 192763/CSID: 5373925/CSID: 193545 +2.3-dihydroxy-3-methylbutanoic acid/2.4-dihydroxy-3-methylbutanoic acid iC5:0-OH(2.3)/iC5:0-OH(2.4) C5H8O3 116.0473440000 CSID: 657/C(C(C(CO)C)O)(=O)O in: NOR00082 +2-Methylcysteine/Methylcysteine aMe-Cys/NMe-Cys C4H7NOS 117.0248350000 CSID: 8233116/CSID: 2074082 +4-Hydroxythreonine 4OH-Thr C4H7NO3 117.0425930000 CSID: 3137512 +2.3.4-trihydroxy-butanoic acid C4:0-OH(2.3.4) C4H6O4 118.0266090000 CSID: 388628 +phenylacetic acid Pha C8H6O 118.0418650000 CSID: 10181341 +4-Hydroxybenzoic acid pOH-Bz C7H4O2 120.0211290000 CSID: 132 +trans2.trans4.trans6-trioctaneic acid C8:3(t2.t4.t6) C8H8O 120.0575150000 CSID: 4520024 +hydroxypicolinic acid Hpa C6H3NO2 121.0163780000 CSID: 12827 +oct-7-ynoic acid/2.trans4-octenoic acid C8:0:1(7)/C8:2(2.t4) C8H10O 122.0731650000 CSID: 4472125/CSID: 4944992 +4-oxo-5-methylproline/4-oxo-homoproline/N-Formyl-Proline 4oxo-5Me-Pro/4oxo-Hpr/NFo-Pro C6H7NO2 125.0476780000 CSID: 2564339/CSID: 10739339/CSID: 87055 +octanoic acid/6-methylheptanoic acid C8:0/iC8:0 C8H14O 126.1044650000 CSID: 370/CSID: 81904 +beta-ureido-dehydroAlanine bU-dAla C4H5N3O2 127.0381760000 PDB: UAL +N-formyl-Valine/N-Acetyl-2-aminoisobutyric acid/3-Hydroxy-5-methylproline NFo-Val/Ac-Aib/3OH-5Me-Pro C6H9NO2 127.0633290000 CSID: 90479/CSID: 203779/CSID: 3823469 +N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140000 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 +DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585780000 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 +3-methoxy-hexanoic acid/3-hydroxy-heptanoic acid C6:0-OMe(3)/C7:0-OH(3) C7H12O2 128.0837300000 CSID: 277923/CSID: 2340494 +DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630000 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 +DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930000 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 +L-acosamine/3-hydroxyleucine/beta-hydroxy-N-Methyl-Valine/gamma-hydroxy-N-Methyl-Valine/L-ristosamine Aco/3OH-Leu/bOH-NMe-Val/gOH-NMe-Val/Ria C6H11NO2 129.0789790000 CSID: 370989/CSID: 244507/CSID: 9205156/CID: 12439044/CSID: 370989 +2-hydroxy-3-methyl-butanedioic acid iC5:0-OH(2)-CA(4) C5H6O4 130.0266090000 CSID: 485839 +Hydroxyasparagine/D-HydroxyAsparagine OH-Asn/D-OH-Asn C4H6N2O3 130.0378420000 CSID: 3670287/CSID: 3670287 +alpha-guanidino Serine gSer C3H6N4O2 130.0490750000 C(C(=O)O)(N)(O)NC(=N)N in: NOR00426 +2.3-dihydroxy-3-methylpentanoic acid aC6:0-OH(2.3) C6H10O3 130.0629940000 CSID: 7 +N5-hydroxy ornithine/D-N5-HydroxyOrnithine/hydroxy-beta lysine OH-Orn/D-OH-Orn/OH-bLys C5H10N2O2 130.0742280000 CSID: 148381/C(CC(C(=O)O)N)CNO in: NOR00205/C(NCC(=O)O)(CCN)O in: NOR00634 +Hydroxyaspartic acid/D-Hydroxyaspartic acid OH-Asp/D-OH-Asp C4H5NO4 131.0218580000 CSID: 5232/CSID: 5232 +Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404850000 CSID: 853/CSID: 4450935 +arabinose/lyxose Ara/Lyx C5H8O4 132.0422590000 CSID: 224/CSID: 831 +L-Olivose Oli C6H12O3 132.0786440000 CSID: 164228 +PhenylGlycine/D-PhenylGlycine Ph-Gly/D-ph-Gly C8H7NO 133.0527640000 CSID: 3732/PDB: PG9 +phenylalaninol Pheol C9H11N 133.0891490000 CSID: 69116 +4-Chloro-Threonine 4Cl-Thr C4H6ClNO2 135.0087060000 CSID: 111708 +2.3-dihydroxy-4-chloro-butanoic acid C4:0-OH(2.3)-Cl(4) C4H5ClO3 135.9927220000 CSID: 25900403 +2.3-dihydroxybenzoic acid diOH-Bz C7H4O3 136.0160440000 CSID: 18 +2-methyl-7-octynoic acid/2.trans4-7-methyl-octenoic acid C8:0:1(7)-Me(2)/iC9:2(2.t4) C9H12O 136.0888150000 CSID: 24770189/CSID: 10761068 +DL-Histidine His C6H7N3O 137.0589120000 CSID: 752 +dehydropyrrolidone dPyr C6H6N2O2 138.0429270000 C1(CC(C(=CC(=O)O)N1)N)=O in CSID: 10199318 +acetylproline/2.3-dimethylpyroglutamic acid Ac-Pro/2Me-3Me-pGlu C7H9NO2 139.0633290000 CSID: 285677/CSID: 13080150 +5.5-dimethyl-2-oxo-hexanoic acid C6:0-Me(5.5)-oxo(2) C8H12O2 140.0837300000 CID: 21197379 +argininal Argal C6H12N4 140.1061960000 CSID: 10655329 +Nonanoic acid/d-6-Methyloctanoic acid/7-Methyloctanoic acid C9:0/aC9:0/iC9:0 C9H16O 140.1201150000 CSID: 7866/CSID: 10015/CSID: 31022 +N-methylchloropyrrole MCP C6H4ClNO 140.9981420000 CSID: 7404981 +N-Acetylisovaline/N-Acetylvaline/N-Formylisoleucine/N-Formylleucin/4-Amino-2.2-dimethyl-3-oxopentanoic acid/4-oxovancosamine Ac-Ival/Ac-Val/NFo-Ile/NFo-Leu/Ibu/4oxo-Van C7H11NO2 141.0789790000 CSID: 272193/CSID: 198159/CSID: 383482/CSID: 90475/CSID: 29322188/C1(C(C(CC(O1)O)(C)N)=O)C in CSID: 10249894 +N-dimethyl-leucine/N.beta-dimethyl-leucine/O-acetyl-leucinol/N.O-dimethyl-isoleucine NdMe-Leu/NMe-bMe-Leu/OAc-Leuol/NMe-OMe-Ile C8H15NO 141.1153640000 CSID: 500040/CID: 15385160/CID: 23037829/CSID: 27194495 +beta-methylglutamine/D-beta-methylglutamine bMe-Gln/D-bMe-Gln C6H10N2O2 142.0742280000 CID: 44602399/CSID: 24604116 +3-hydroxy-octanoic acid/2.2-dimethyl-3-hydroxyhexanoic acid/3-hydroxy-2-methyl-heptanoic acid C8:0-OH(3)/C6:0-Me(2.2)-OH(3)/C7:0-Me(2)-OH(3) C8H14O2 142.0993800000 CSID: 24791/CSID: 21418738/CSID: 27143447 +3-Methyl-Glutamic acid/Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/D-Glutamic Acid methyl ester/2-Aminoadipic acid 3Me-Glu/MeO-Glu/D-MeO-Glu/MeO-D-Glu/Aad C6H9NO3 143.0582430000 CSID: 207514/CSID: 66546/CSID: 66546/CSID: 66546/CSID: 456 +L-actinosamine/L-eremosamine/norstatine/Vancosamine/N-methyl-hydroxyisoleucine Act/Ere/Nst/Van/NMe-OH-Ile C7H13NO2 143.0946290000 CID: 20377364/CSID: 9542085/CSID: 151726/CSID: 164304/CSID: 24770217 +beta-hydroxyglutamine/D-beta-hydroxy-N2-methyl-asparagine/D-beta-hydroxy-N2-methyl-asparagine OH-Gln/Me-OH-Asn/D-N2Me-bOH-Asn C5H8N2O3 144.0534920000 CID: 22592766/CSID: 24604117/C(C(=O)O)(N)C(C(=O)NC)O in: NOR00669 +methoxyaspartic acid OMe-Asp C5H7NO4 145.0375080000 C(C(C(C(=O)O)N)=[O]C)(=O)O in: NOR00717 +3.5-hydroxy-4-amino-hexadecanoic acid C6:0-OH(3.5)-NH2(4) C6H11NO3 145.0738930000 C(CC(C(C(C)O)N)O)(O)=O in: NOR00444 +L-rhamnose Rha C6H10O4 146.0579090000 CSID: 190747 +Methionine-S-oxide O-Met C5H9NO2S 147.0353990000 CSID: 824 +Chloro-Isoleucine Cl-Ile C6H10ClNO 147.0450920000 C(C(O)=O)(N)C(C(C)Cl)C in CSID: 10269389 +DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684140000 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 +2-hydroxyphenyl-2-oxo-ethanoic acid Hpoe C8H4O3 148.0160440000 CSID: 348 +Phenyl-lactate/D-Phenyl-lactate Ph-Lac/D-Ph-Lac C9H8O2 148.0524300000 CSID: 3715/CID: 643327 +HydroxyPhenylGlycine/D-HydroxyPhenylGlycine Hpg/D-Hpg C8H7NO2 149.0476780000 CSID: 83189/CID: 89853 +2.trans4-8-methyl-noneoic acid iC10:2(2.t4) C10H14O 150.1044650000 C(C=CC=CCCC(C)C)(O)=O in CSID: 16736750 +cysteic acid/D-cysteic acid CysA/D-CysA C3H5NO4S 150.9939280000 PDB: OCS/PDB: 00C +D-4-fluoroPhenylGlycin D-F-ph-Gly C8H6FNO 151.0433430000 CSID: 88776 +3-amino-2-methyloct-7-ynoic acid C8:0:1(7)-Me(2)-NH2(3) C9H13NO 151.0997140000 C(CCCC#C)(C(C(=O)O)C)N in CSID: 8230475 +2-methyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2)-OH(3) C9H12O2 152.0837300000 CSID: 9964309 +2-methyl-8-noneic acid C9:1(8)-Me(2) C10H16O 152.1201150000 CID: 17824924 +Hydroxyhistidine OH-His C6H7N3O2 153.0538260000 CSID: 379547 +N-methyl homo vinylogous Valine NMe-hv-Val C9H15NO 153.1153640000 C(C(NC)C(C)C)=C(C(O)=O)C in CSID: 10213622 +capreomycidine/enduracididine/D-enduracididine Cap/End/D-End C6H10N4O 154.0854610000 CSID: 3818574/CSID: 24775830/CSID: 24775830 +decanoic acid/isodecanoic acid/7-methylnonanoic acid C10:0/iC10:0/aC10:0 C10H18O 154.1357650000 CSID: 2863/CID: 111470/CSID: 4471754 +Alanine-thiazole Ala-Thz C6H7N2OS 155.0279090000 CSID: 23916434 +N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946290000 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 +2-Aminononanoic acid Me-AOA C9H17NO 155.1310140000 CSID: 198341 +2-carboxyquinoxaline COOH-Qui C9H4N2O 156.0323630000 CSID: 87301 +N-formyl-Glutamine NFo-Gln C6H8N2O3 156.0534920000 CSID: 2106926 +hydroxyisovalerylpropionyl Hip C8H12O3 156.0786440000 CID: 18942657 +3.4-dimethylglutamine 3Me-4Me-Gln C7H12N2O2 156.0898780000 CSID: 21376706 +DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110000 PDB: ARG/PDB: DAR/CSID: 6082 +3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150300000 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 +N-trimethyl-leucine NtMe-Leu C9H18NO 156.1388390000 C(C(=O)O)(CC(C)C)[N](C)(C)C in: NOR00695 +Citrulline/D-Citrulline Cit/D-Cit C6H11N3O2 157.0851270000 CSID: 810/CID: 637599 +isostatine/statine Ist/Sta C8H15NO2 157.1102790000 CSID: 19578058/CSID: 2632509 +N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691420000 PDB: FHO/PDB: FH7 +alpha-amino-hydroxyadipic acid Ahad C6H9NO4 159.0531580000 CID: 22326384 +N-methyl-2.3-dehydrophenylalanine NMe-dPhe C10H9NO 159.0684140000 C(C(O)=O)(=CC1=CC=CC=C1)NC in CSID: 4444584 +O-methyl-L-rhamnose 2OMe-Rha C7H12O4 160.0735590000 CSID: 4352115 +N-Methyl-Phenylalanine/D-N-Methyl-Phenylalanine/3-methylphenylalanine/Homophenylalanine NMe-Phe/D-NMe-Phe/3Me-Phe/Hph C10H11NO 161.0840640000 PDB: MEA/PDB: ZAE/PDB: APD/CSID: 92605 +Hexose/L-glucose/D-Glucose Hexose/Glc/D-Glc C6H10O5 162.0528230000 CSID: 23139/CSID: 201/PDB: GLC +N-hydroxy-dehydro-HydroxyPhenylGlycine/D-N-hydroxy-dehydro-HydroxyPhenylGlycine OH-dHpg/D-OH-dHpg C8H5NO3 163.0269430000 CID: 20339127/C(C(=O)O)(C1=CC=C(C=C1)O)=NO in: NOR00822 +Methionine sulfone O2-Met C5H9NO3S 163.0303140000 CSID: 63154 +phosphinothricin PT C5H10NO3P 163.0398300000 CSID: 4630 +Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633290000 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 +4-hydroxy-D-phenyl-lactate 4OH-D-Ph-Lac C9H8O3 164.0473440000 CID: 9378 +propenoyl-alanyloxazole acid PALOA C8H8N2O2 164.0585780000 C(C=CC1=COC(=N1)C(N)C)(=O)O in CSID: 10477875 +3.4-dichloro-proline Cl2-Pro C5H5Cl2NO 164.9748200000 CID: 21295133 +3.5-dihydroxyphenylglycine/D-3.5-dihydroxyphenylglycine Dhpg/D-Dhpg C8H7NO3 165.0425930000 PDB: D3P/PDB: D3P +cyclo alpha-ketoarginine ck-Arg C7H10N4O 166.0854610000 C12(C(CCCN1C(=NC2=O)-N)N)O in CSID: 9977717 +2.2-dimethyl-3-hydroxy-7-octynoic acid C8:0:1(7)-Me(2.2)-OH(3) C10H14O2 166.0993800000 CSID: 29330001 +2-carboxy-6-hydroxyoctahydroindole Choi C9H13NO2 167.0946290000 C1C(NC2C1CCC(C2)O)C(=O)O in CSID: 10480056 +3-Desoxy-Methyl-4-butenyl-4-methyl threonine 3d-NMe-Bmt C10H17NO 167.1310140000 CC=CCC(C)CC(NC)C(=O)O in CSID: 4953086 +1-methoxy-beta-alanine-thiazole OMe-bAla-Thz C7H8N2OS 168.0357340000 C(N)(CC(=O)OC)C1=NC=CS1 in CSID: 26365309 +2.2-dimethyl-3-hydroxy-7-octenoic acid C8:1(7)-Me(2.2)-OH(3) C10H16O2 168.1150300000 C(C(C(CCCC=C)O)(C)C)(O)=O in CSID: 8732670 +9-methyldecanoic acid/8-methyldecanoic acid iC11:0/aC11:0 C11H20O 168.1514150000 CSID: 4471714/CID: 21813 +4-butenyl-4-methyl threonine/Dolaproine Bmt/Dap C9H15NO2 169.1102790000 CC=CCC(C)C(C(C(=O)O)N)O in CSID: 4444325/C1C(CCN1)C(C(C(O)=O)C)OC in CSID: 7986684 +5-hydroxy-capreomycidine 5OH-Cap C6H10N4O2 170.0803760000 C1C(NC(NC1C(C(=O)O)N)=N)O in CSID: 2301596 +hydroxysecbutyl acetyl propionyl Hysp C9H14O3 170.0942940000 C(C(C(C(O)C(CC)C)=O)C)(=O)O in CSID: 10477730 +homoarginine Har C7H14N4O 170.1167610000 CSID: 8732 +3-hydroxy-decanoic acid/3-hydroxy-2-methyl-nonanoic acid/2.2-dimethyl-3-hydroxy-octanoic acid/2.4-dimethyl-3-hydroxyisooctanoic acid C10:0-OH(3)/C9:0-Me(2)-OH(3)/C8:0-Me(2.2)-OH(3)/iC8:0-Me(2.4)-OH(3) C10H18O2 170.1306800000 CSID: 24790/CSID: 9587708/CSID: 8949283/CSID: 25944197 +N-methoxyacetyl-valine NOMe-Ac-Val C8H13NO3 171.0895430000 CSID: 11856685 +N-desmethyldolaisoleuine/alpha-hydroxy-6-methyl-3-aminooctanoic acid dDil/aC9:0-OH(2)-NH2(3) C9H17NO2 171.1259290000 C(C(N)C(C)CC)(CC(O)=O)OC in CSID: 9938808/C(C(C(CCC(CC)C)N)O)(=O)O in CSID: 10475103 +N-acetyl-HydroxyOrnithine/D-N-acetyl-HydroxyOrnithine Ac-OH-Orn/D-Ac-OH-Orn C7H12N2O3 172.0847920000 PDB: AHO/CSID: 3670289 +tryptophanol Trpol C11H12N2 172.1000480000 CSID: 10234 +N-methyldichloropyrrole-2-carboxylic acid MdCP C6H3Cl2NO 174.9591700000 CSID: 21926880 +beta.beta-dimethyl-Methionine-S-oxide bbMe2-O-Met C7H13NO2S 175.0666990000 CSID: 29322228 +alpha-amino-phenyl-valeric acid Apv C11H13NO 175.0997140000 CSID: 262061 +Homotyrosine/N-methyltyrosine/beta-hydroxy-N-Methyl-Phenylalanine Hty/NMe-Tyr/bOH-NMe-Phe C10H11NO2 177.0789790000 CSID: 3365526/CSID: 453342/CSID: 14028021 +propenoyl-2-aminobutanoyloxazole acid PAOA C9H10N2O2 178.0742280000 C(C=CC1=COC(=N1)C(N)CC)(=O)O in CSID: 27026296 +2.4-dimethyl-dec-9-ynoic acid/10-methyl-2.trans4-undecanoic acid C10:0:1(9)-Me(2.4)/iC12:2(2.t4) C12H18O 178.1357650000 C(C(CC(CCCCC#C)C)C)(=O)O in CSID: 23076292/C(C=CC=CCCCCC(C)C)(O)=O in CSID: 24677772 +beta-hydroxy-tyrosine/3.4-dihydroxyphenylalanine bOH-Tyr/diOH-Phe C9H9NO3 179.0582430000 CSID: 13930867/CSID: 813 +proline-thiazole Pro-Thz C8H8N2OS 180.0357340000 C1=CSC(=N1)C2CCC(N2)C(=O)O in CSID: 8971346 +2-methyl-5-dodecenoic acid C12:1(5) C12H20O 180.1514150000 CSID: 4471802 +Anticapsin Aca C9H11NO3 181.0738930000 CSID: 2796855 +D-homoarginine D-Har C7H10N4O2 182.0803760000 CSID: 53295 +vinylogous arginine v-Arg C8H14N4O 182.1167610000 C(C(N)CCCNC(=N)N)=CC(=O)O in CSID: 8946030 +dodecanoic acid/isododecanoic acid C12:0/iC12:0 C12H22O 182.1670650000 CSID: 3756/CID: 75942 +3-chloro-4-hydroxyphenylglycine Cl-Hpg C8H6ClNO2 183.0087060000 CSID: 3817439 +N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259290000 CSID: 9944222/CSID: 16281719 +2.3-Dehydro-Tryptophan dh-Trp C11H8N2O 184.0636630000 CSID: 7991355 +ureido-4-oxovancosamine U4oxo-Van C8H12N2O3 184.0847920000 C1(C2(C(CC(O1)O)(C)NC(N2)=O)O)C in: NOR00711 +alpha-ketoarginine k-Arg C7H12N4O2 184.0960260000 C(C(C(CCCNC(=N)N)N)=O)(=O)O in CSID: 10477079 +3-hydroxy-undecanoic acid/3-hydroxy-isoundecanoic acid/3-hydroxy-2-methyl-decanoic acid/3-hydroxy-4-methyl-decanoic acid C11:0-OH(3)/iC11:0-OH(3)/C10:0-Me(2)-OH(3)/C10:0-Me(4)-OH(3) C11H20O2 184.1463300000 CSID: 2340495/CC(C)CCCCCC(CC(=O)O)O in: NOR00398/CSID: 13775620/CSID: 28533406 +Dolapyrrolidone Dpy C12H11NO 185.0840640000 CSID: 8735462 +Dolaisoleucine/8-hydroxy-2-amino-decanoic acid/9-hydroxy-2-amino-decanoic acid Dil/C10:0-OH(8)-NH2(2)/C10:0-OH(9)-NH2(2) C10H19NO2 185.1415790000 C(CC(O)=O)(OC)C(C(C)CC)NC in CSID: 7986684/CSID: 26949211/C(C(N)CCCCCCC(C)O)(=O)O in CSID: 10279723 +DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793130000 CSID: 1116/CSID: 8707 +hydrated alpha-ketoarginine hk-Arg C7H14N4O2 186.1116760000 C(C(C(CCCN=C(N)N)N)O)(=O)O in CSID: 8946570 +dehydro vinylogous tyrosine dv-Tyr C11H9NO2 187.0633290000 C(C(N)=CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 8185737 +3.4-dihydroxyArginine diOH-Arg C6H12N4O3 188.0909400000 C(C(C(C(O)=O)N)O)(CN=C(N)N)O in CSID: 8801410 +vinylogous tyrosine/N-acetylphenylalanine v-Tyr/Ac-Phe C11H11NO2 189.0789790000 C(C(N)CC1=CC=C(C=C1)O)=CC(=O)O in CSID: 10477079/CSID: 1923 +kynurenine/D-kynurenine Kyn/D-Kyn C10H10N2O2 190.0742280000 CSID: 823/CID: 1152206 +coronafacic acid CFA C12H14O2 190.0993800000 CSID: 13300082 +N-methyl-4-methylamino-phenylalanine/N.O-dimethyl-tyrosinecarboxamid NMe-MeA-Phe/NMe-OMe-TyrC C11H14N2O 190.1106130000 CID: 21137790/CID: 19003692 +alpha-amino-hydroxyphenyl-valeric acid/N-methyl-homotyrosine/3-methyl-homotyrosine/ethylene inserted tyrosine/N.O-dimethyl-tyrosine/D-N.O-dimethyl-tyrosine Ahv/NMe-Hty/3Me-Hty/e-Tyr/NMe-OMe-Tyr/D-NMe-OMe-Tyr C11H13NO2 191.0946290000 C(C(=O)O)(CCCC1=CC=C(C=C1)O)N in CSID: 142959/C1=CC(=CC=C1CCC(C(=O)O)NC)O in CSID: 10477716/C1=CC(=CC=C1CC(C(C(=O)O)N)C)O in: NOR00265/C(C(N)CC1=CC=C(C=C1)O)CC(=O)O in CSID: 9977717/CID: 18925327/CID: 18925327 +10-methyl-2.trans4-dodecenoic acid aC13:2(2.t4) C13H20O 192.1514150000 C(C=CC=CCCCCC(CC)C)(O)=O in CSID: 24665012 +di-chloro-N-methyl-dehydroLeucine Cl2-NMe-dhLeu C7H9Cl2NO 193.0061200000 C(C(O)=O)(NC)=CC(C)C(Cl)Cl in CSID: 8701761 +beta-methoxy-tyrosine bOMe-Tyr C10H11NO3 193.0738930000 CSID: 16174140 +O-sulfate-2-hydroxy-3-methylpentanoic acid OSu-Hmp C6H10O5S 194.0248940000 C(C(C(CC)C)O[S](=O)(=O)O)(=O)O in CSID: 10477875 +methyloxazoline-isoleucine MeOx-Ile C11H18N2O 194.1419130000 C(N)(C(C)CC)C1=NC(C(C1)C)C(=O)O in CSID: 10477991 +11-methyl-3-dodecenoic acid/10-methyl-3-dodecenoic acid iC13:1(3)/aC13:1(3) C13H22O 194.1670650000 C(CC=CCCCCCCC(C)C)(O)=O in: NOR00296/C(CC=CCCCCCC(CC)C)(O)=O in: NOR00767 +di-chloro-N-methyl-Leucine Cl2-NMe-Leu C7H11Cl2NO 195.0217700000 C(C(O)=O)(NC)CC(C)C(Cl)Cl in CSID: 8773801 +3-hydroxy-5-dodecenoic acid/9-oxo-2.4-dimethyldecanoic acid/8-hydroxy-2.4.6-trimethyl-4-nonenoic acid C12:1(5)-OH(3)/C10:0-Me(2.4)-oxo(9)/C9:1(4)-Me(2.4.6)-OH(8) C12H20O2 196.1463300000 CSID: 10761118/C(C(CC(CCCCC(C)=O)C)C)(=O)O in CSID: 8946480/C(C(CC(=CC(CC(C)O)C)C)C)(O)=O in CSID: 8007368 +11-methyldodecanoic acid/10-methyldodecanoic acid iC13:0/aC13:0 C13H24O 196.1827150000 CID: 33002/CSID: 2282934 +chloro-tyrosine Cl-Tyr C9H8ClNO2 197.0243570000 CSID: 106510 +2-amino-9.10-epoxi-8-oxodecanoic acid C10:0-NH2(2)-Ep(9)-oxo(8) C10H15NO3 197.1051930000 CSID: 11345228 +4-butenyl-4-methyl-N.4-methyl threonine Me2-Bmt C11H19NO2 197.1415790000 CSID: 4450325 +3-hydroxy-dodecanoic acid/3-hydroxy-isododecanoic acid/3-hydroxy-2-methyl-undecanoic acid C12:0-OH(3)/iC12:0-OH(3)/C11:0-Me(2)-OH(3) C12H22O2 198.1619800000 CSID: 85026/CID: 15089799/CSID: 13775586 +9-hydroxy-2-amino-8-oxo-decanoic acid C10:0-OH(9)-NH2(2)-oxo(8) C10H17NO3 199.1208430000 CSID: 25942012 +N-acetyl-N6-formyl-N6-hydroxyOrnithine NAc-Fo-OH-Orn C8H12N2O4 200.0797070000 C(C(=O)O)(NC(C)=O)CCCN(O)C=O in CSID: 3294 +N1-methyl-tryptophan 1Me-Trp C12H12N2O 200.0949630000 CSID: 88584 +5-hydroxytryptophan/phototryptophan OH-Trp/pTrp C11H10N2O2 202.0742280000 CSID: 141/CID: 10331043 +N-methyl-4-dimethylamino-phenylalanine NMe-Me2A-Phe C12H16N2O 204.1262630000 CSID: 27594543 +vinylogous hydroxy tyrosine v-OH-Tyr C11H11NO3 205.0738930000 C(C(N)CC1=CC(=C(C=C1)O)O)=CC(=O)O in CSID: 9204437 +alpha-amino-methoxyphenyl-valeric acid Amv C12H15NO2 205.1102790000 CSID: 9681632 +N-Methyl-Lanthionine NMe-Lan C6H10N2O4S 206.0361280000 C(SCC(C(=O)O)N)C(C(O)=O)NO in: NOR00149 +3-nitrotyrosine 3NO2-Tyr C9H8N2O4 208.0484070000 CSID: 205676 +7-tetradecenoic acid/12-methyl-3-tridecenoic acid C14:1(7)/iC14:1(3) C14H24O 208.1827150000 CSID: 10722652/PDB: LNG +D-PhosphateAsparagine D-PO-Asn C4H7N2O6P 210.0041720000 C(C(C(C(O)=O)N)O[P](O)(=O)O)(=O)N in: NOR00025 +propenoyl-O-methylserinylthiazole acid PMST C9H10N2O2S 210.0462980000 C(C=CC1=CSC(=N1)C(N)COC)(=O)O in CSID: 8503913 +5-oxo-8-hydroxy-2.4.6-trimethyl-4-nonaneic acid C9:1(Me4)-Me(2.4.6)-OH(8)-Oxo(5) C12H18O3 210.1255940000 C(C(CC(C(C(CC(C)O)C)=O)=C)C)(O)=O in CSID: 8434247 +tetradecanoic acid/12-methyl-tridecanoic acid C14:0/iC14:0 C14H26O 210.1983650000 PDB: MYR/CID: 520298 +Chloro-N-methyl-tyrosine/D-3-chloro-N-methyl-Tyrosine Cl-NMe-Tyr/D-Cl-NMe-Tyr C10H10ClNO2 211.0400070000 PDB: CNT/C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)Cl in: NOR00614 +3-amino-tridecanoic acid C13:0-NH2(3) C13H25NO 211.1936140000 CSID: 26283438 +3-hydroxy-tridecanoic acid/3-hydroxy-isotridecanoic acid/3-hydroxy-10-methyl-dodecanoic acid C13:0-OH(3)/iC13:0-OH(3)/aC13:0-OH(3) C13H24O2 212.1776300000 CSID: 4472174/CID: 15089800/C(CC(CCCCCCC(CC)C)O)(O)=O in: NOR00857 +beta-hydroxy-chloro-tyrosine bOH-Cl-Tyr C9H8ClNO3 213.0192710000 CSID: 25938524 +3-amino-6-hydroxy-2-piperidone Ahp C9H14N2O4 214.0953570000 CSID: 25058696 +N-methyl-5-hydroxytryptophan/methoxytryptophan NMe-OH-Trp/OMe-Trp C12H12N2O2 216.0898780000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C=C2)O in CSID: 10476796/O(C(=O)[C@@H](N([H])[H])CC1=C[N](C2=CC=CC=C12)OC)[H] in CSID: 5293532 +2.6-diamino-7-hydroxyazelaic acid Daz C9H16N2O4 216.1110070000 CSID: 391749 +4-amino-7-guanidino-2.3-dihydroxyheptanoic acid Agdha C8H16N4O3 216.1222400000 CSID: 21377788 +3.5-dichloro-4-hydroxyphenylglycine Cl2-Hpg C8H5Cl2NO2 216.9697340000 CSID: 9804791 +DHP-methyloxazolinyl group DMOG C11H9NO4 219.0531580000 CSID: 12721 +N-methoxyacetyl-D-phenylalanine NOMe-Ac-D-Phe C12H13NO3 219.0895430000 CSID: 11859621 +D-6'-chloro-tryptophan D-Cl-Trp C11H9ClN2O 220.0403410000 C(C(=O)O)(N)CC1=NC2=C(C1)C=CC(=C2)Cl in CSID: 8094776 +dihydroxyphenylthiazol group DHPT C10H7NO3S 221.0146640000 CSID: 23110909 +12-methyl-3-tetradecenoic acid aC15:1(3) C15H26O 222.1983650000 C(CC=CCCCCCCCC(CC)C)(O)=O in: NOR00768 +2.3-dihydroxy-2.6.8-trimethyldeca-(4Z.6E)-dienoic acid/2.3-dihydroxy-trans4.trans6-tridecenoic acid aC11:2(4.6)-Me(2.6)-OH(2.3)/C13:2(t4.t6)-OH(2.3) C13H20O3 224.1412450000 C(C(C(C=CC(=CC(CC)C)C)O)(O)C)(O)=O in CSID: 4977118/C(C(C(C=CC=CCCCCCC)O)O)(O)=O in CSID: 4976886 +12-methyltetradecanoic acid aC15:0 C15H28O 224.2140160000 CSID: 20368 +bromophenylalanine Br-Phe C9H8BrNO 224.9789160000 CSID: 77275 +3-amino-tetradecanoic acid/3-amino-isotetradecanoic acid C14:0-NH2(3)/iC14:0-NH2(3) C14H27NO 225.2092640000 CSID: 15571256/CID: 22471993 +3-hydroxy-tetradecanoic acid/3-hydroxy-12-methyl-tridecanoic acid C14:0-OH(3)/iC14:0-OH(3) C14H26O2 226.1932800000 CSID: 15252/CID: 22471995 +tri-chloro-N-methyl-dehydroLeucine Cl3-NMe-dhLeu C7H8Cl3NO 226.9671480000 C(C(O)=O)(NC)=CC(C)C(Cl)(Cl)Cl in CSID: 10477276 +N-acetyltryptophan Ac-Trp C13H12N2O2 228.0898780000 CSID: 1925 +beta.beta.N-trimethyltryptophan bbMe-NMe-Trp C14H16N2O 228.1262630000 C1=CC=CC2=C1C(=C[N]2)C(C(C(O)=O)NC)(C)C in CSID: 8158974 +3-hydroxy-2.2.4-trimethyl-7-hydroxydecanoic acid C10:0-Me(2.2.4)-OH(3.7) C13H24O3 228.1725450000 C(C(C(C(=O)O)(C)C)O)(CCC(CCC)O)C in CSID: 8184030 +tri-chloro-N-methyl-Leucine Cl3-NMe-Leu C7H10Cl3NO 228.9827980000 C(C(O)=O)(NC)CC(C)C(Cl)(Cl)Cl in CSID: 10477275 +thiazolylphenylalanine Phe-Thz C12H10N2OS 230.0513840000 C(N)(CC1=CC=CC=C1)C2=NC(=CS2)C(O)=O in CSID: 8593238 +D-2-carboxy-tryptophan D-COOH-Trp C12H10N2O3 230.0691420000 C(C(O)=O)(N)CC1=C([N]C2=C1C=CC=C2)C(=O)O in CSID: 7987591 +N-methyl-6-chloro-tryptophan NMe-Cl-Trp C12H11ClN2O 234.0559910000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=CC(=C2)Cl in CSID: 8805002 +7-hexadecenoic acid/9-hexadecenoic acid C16:1(7)/C16:1(9) C16H28O 236.2140160000 CSID: 4895966/CSID: 4445872 +2.3-dihydroxy-trans4.trans6-tetradecenoic acid/2.6.8-trimethyl-5.7-dihydroxy-trans2.trans8-undecenoic acid C14:2(t4.t6)-OH(2.3)/C11:2(t2.t8)-Me(2.6.8)-OH(5.7) C14H22O3 238.1568950000 C(C(C(C=CC=CCCCCCCC)O)O)(O)=O in CSID: 8924310/C(C(=CCC(C(C(C(=CCC)C)O)C)O)C)(O)=O in CSID: 10481263 +hexadecanoic acid C16:0 C16H30O 238.2296660000 CSID: 960 +beta-methyl-bromophenylalanine bMe-Br-Phe C10H10BrNO 238.9945660000 C(C(=O)O)(C(C1=CC=C(C=C1)Br)C)N in CSID: 10475327 +3-amino-pentadecanoic acid/3-amino-isopentadecanoic acid/3-amino-12-methyl-tetradecanoic acid C15:0-NH2(3)/iC15:0-NH2(3)/aC15:0-NH2(3) C15H29NO 239.2249150000 CSID: 26283439/C(CC(CCCCCCCCCC(C)C)N)(O)=O in: NOR00784/C(CC(CCCCCCCCC(CC)C)N)(O)=O in: NOR00785 +3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089300000 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 +bromotyrosine/beta-hydroxy-bromophenylalanine Br-Tyr/bOH-Br-Phe C9H8BrNO2 240.9738310000 CSID: 131083/CSID: 19757850 +beta.beta.N1.N-tetramethyltryptophan bbNMe-NMe-Trp C15H18N2O 242.1419130000 C1=CC=CC2=C1C(=C[N]2C)C(C(C(O)=O)NC)(C)C in CSID: 8570259 +3.4-dihydroxy-tetradecanoic acid/ 3-hydroxy-2.2.4-trimethyl-7-methoxydecanoic acid C14:0-OH(3.4)/C10:0-Me(2.2.4)-OH(3)-OMe(7) C14H26O3 242.1881950000 CID: 22667431/CSID: 28587148 +3-amino-4-hydroxy-6-methyl-8-phenyl-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-Ph(8) C15H17NO2 243.1259290000 C(CC(C(C=C(C=CC1=CC=CC=C1)C)O)N)(=O)O in CSID: 10475327 +tri-chloro-2-hydroxy-N-methyl-Leucine/tri-chloro-5-hydroxy-N-methyl-Leucine Cl3-2OH-NMe-Leu/Cl3-5OH-NMe-Leu C7H10Cl3NO2 244.9777130000 C(C(O)=O)(NC)(CC(C)C(Cl)(Cl)Cl)O in CSID: 10477276/C(C(O)=O)(NC)CC(CO)C(Cl)(Cl)Cl in: NOR00511 +N-methyl-6-chloro-5-hydroxytryptophan NMe-Cl-OH-Trp C12H11ClN2O2 250.0509060000 C(C(=O)O)(NC)CC1=C[N]C2=C1C=C(C(=C2)Cl)O in CSID: 10473575 +2.3-dihydroxy-trans4.trans6-pentadecenoic acid C15:2(t4.t6)-OH(2.3) C15H24O3 252.1725450000 C(C(C(C=CC=CCCCCCCCC)O)O)(O)=O in CSID: 4976888 +3-hydroxy-9-hexadecenoic acid C16:1(9)-OH(3) C16H28O2 252.2089300000 C(CC(CCCCCC=CCCCCCC)O)(O)=O in: NOR00720 +3-amino-hexadecanoic acid/3-amino-isohexadecanoic acid C16:0-NH2(3)/iC16:0-NH2(3) C16H31NO 253.2405650000 CSID: 24597602/C(CC(CCCCCCCCCCC(C)C)N)(O)=O in: NOR00793 +3-hydroxy-hexadecanoic acid/3-hydroxy-isohexadecanoic acid C16:0-OH(3)/iC16:0-OH(3) C16H30O2 254.2245800000 CSID: 266538/C(CC(CCCCCCCCCCC(C)C)O)(O)=O in: NOR00897 +D-3-bromo-N-methyl-Tyrosine D-Br-NMe-Tyr C10H10BrNO2 254.9894810000 CSID: 2128826 +pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 +N1-carboxy-bichomotryptophan N1-COOH-bhTrp C14H14N2O3 258.1004420000 C(CC1=C[N](C2=C1C=CC=C2)C(=O)O)CC(C(=O)O)N in CSID: 9968260 +isopyoverdin chromophore/pyoverdin chromophore ChrI/ChrP C13H13N3O3 259.0956910000 C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in: NOR00163/C1=C(C(=CC2=C1N3C(C(=C2)N)NC(CC3)C(O)=O)O)O in CID: 5289234 +5.6-dihydropyoverdin chromophore ChrD C13H15N3O3 261.1113410000 C1=C(C(=CC2=C1N3C(C(N)C2)NCCC3C(O)=O)O)O in: NOR00903 +D-6-chloro-N2-formamidotryptophan D-Cl-CONH2-Trp C12H10ClN3O2 263.0461550000 C(C(O)=O)(N)CC1=C[N](C2=C1C=CC(=C2)Cl)C(=O)N in CSID: 8138519 +3-amino-8-phenyl-2.4.5-trihydroxyoct-7-enoic acid C8:1(7)-OH(2.4.5)-NH2(3)-Ph(8) C14H17NO4 263.1157580000 CSID: 29330841 +5-bromo-tryptophan Br-Trp C11H9BrN2O 263.9898150000 CSID: 87339 +9-octadecenoic acid C18:1(9) C18H32O 264.2453160000 CSID: 553123 +8.10-Dimethyl-9-hydroxy-7-methoxytridecadienoic acid DHMDA C16H26O3 266.1881950000 C(C(C(CCC)C)O)(C(C=CC=CCC(=O)O)OC)C in CSID: 10479168 +3-amino-14-methyl-hexadecanoic acid/3-amino-15-methyl-hexadecanoic acid aC17:0-NH2(3)/iC17:0-NH2(3) C17H33NO 267.2562150000 C(CC(CCCCCCCCCCC(CC)C)N)(O)=O in CSID: 2340866/C(CC(CCCCCCCCCCCC(C)C)N)(O)=O in: NOR00801 +3-hydroxy-14-methyl-hexadecanoic acid/3-hydroxy-15-methyl-hexadecanoic acid aC17:0-OH(3)/iC17:0-OH(3) C17H32O2 268.2402300000 C(CC(CCCCCCCCCCC(CC)C)O)(O)=O in: NOR00900/CSID: 141849 +3.4-dihydroxy-hexadecanoic acid C16:0-OH(3.4) C16H30O3 270.2194950000 CID: 22348653 +4-propenoyl-2-tyrosylthiazole acid PTTA C14H12N2O2S 272.0619480000 C(O)(=O)C=CC1=CSC(=N1)C(N)CC2=CC=C(C=C2)O in CSID: 16738243 +N-methyl-2-Bromo-tryptophan NMe-Br-Trp C12H11BrN2O 278.0054650000 C(C(=O)O)(NC)CC1=C([N]C2=C1C=CC=C2)Br in CSID: 8007368 +2-bromo-5-hydroxytryptophan Br-OH-Trp C11H9BrN2O2 279.9847300000 CSID: 643874 +3-hydroxy-9-octadecenoic acid C18:1(9)-OH(3) C18H32O2 280.2402300000 C(CC(CCCCCC=CCCCCCCCC)O)(O)=O in: NOR00724 +azotobactins chromophore ChrA C14H11N3O4 285.0749560000 C1=C(C(=CC2=C1N4C3C(=C2)NC(N3CCC4C(O)=O)=O)O)O in: NOR00208 +O-demethyl-Adda DMAdda C19H25NO2 299.1885290000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)O)C)C)N)C)(O)=O in: NOR00129 +D-3-iodo-N-methyl-Tyrosine D-I-NMe-Tyr C10H10INO2 302.9756110000 C(C(=O)O)(NC)CC1=CC(=C(C=C1)O)I in CSID: 9017332 +actinomycin chromophore ChrAct C16H10N2O5 310.0589710000 CSID: 86817 +3-amino-9-methoxy-2.6.8-trimethyl-10-phenyldeca-4.6-dienoic acid Adda C20H27NO2 313.2041790000 CSID: 10471100 +3-amino-4-hydroxy-6-methyl-8-(p-bromophenyl)-5.7-octadienoic acid C8:2(5.7)-Me(6)-OH(4)-NH2(3)-brPh(8) C15H16BrNO2 321.0364310000 C(CC(C(C=C(C=CC1=CC=C(C=C1)Br)C)O)N)(=O)O in CSID: 10476834 +3-amino-6-methyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6)-OH(2.4.5)-NH2(3)-Ph(12) C19H23NO4 329.1627080000 C(C(C(C(C(C(C=CC=CC=CC1=CC=CC=C1)C)O)O)N)O)(O)=O in CSID: 8923613 +3-amino-10-(p-ethoxyphenyl)-2.4.5-trihydroxydeca-7.9-dienoic acid C10:2(7.9)-OH(2.4.5)-NH2(3)-ePh(10) C18H23NO5 333.1576230000 CSID: 29330839 +O-Acetyl-O-demethylAdda ADMAdda C21H27NO3 341.1990940000 C(C(C(C=CC(=CC(C(CC1=CC=CC=C1)OC(C)=O)C)C)N)C)(O)=O in: NOR00144 +3-amino-6.10-dimethyl-12-phenyl-2.4.5-trihydroxydodeca-7.9.11-trienoic acid C12:3(7.9.11)-Me(6.10)-OH(2.4.5)-NH2(3)-Ph(12) C20H25NO4 343.1783580000 C(C(C(C(C(C(C=CC=C(C=CC1=CC=CC=C1)C)C)O)O)N)O)(O)=O in CSID: 10187168 +3-amino-6-methyl-12-(p-methoxyphenyl)-2.4.5-trihydroxydodec-11-enoic acid C12:1(11)-Me(6)-OH(2.4.5)-NH2(3)-mPhe(11) C20H29NO5 363.2045730000 CSID: 29330842 +norspermidine NSpd C6H15N3 129.1265970000 CID: 5942 +spermidine Spd C7H17N3 143.1422480000 PDB: SPD +guanylspermidine GSpd C8H19N5 185.1640460000 CID: 3082086 +formyl group CO CO 27.9949150000 PDB: FOR diff --git a/CycloBranch/BrickDatabases/db33_v1.txt b/CycloBranch/BrickDatabases/db33_v1.txt index 9cbf0ac..790373a 100644 --- a/CycloBranch/BrickDatabases/db33_v1.txt +++ b/CycloBranch/BrickDatabases/db33_v1.txt @@ -1,33 +1,33 @@ -3-hydroxy-4-methyloctanoic acid C8:0-Me(4)-OH(3) C9H16O2 156.1150300000 CSID: 17247549 -DL-Phenylalanine Phe C9H9NO 147.0684140000 CSID: 969 -DL-Alanine/beta-Alanine/Sarcosine Ala/bAla/Sar C3H5NO 71.0371110000 CSID: 582/CSID: 234/CSID: 1057 -Leucine/Isoleucine/N-Methyl-L-valine Leu/Ile/NMe-Val C6H11NO 113.0840700000 CSID: 834/CSID: 769/CSID: 392093 -D-Leucic acid (2-hydroxy-4-methylpentanoic acid) C5:0-Me(4)-OH(2) C6H10O2 114.0680790000 CSID: 83753 -3-Methylproline/Pipecolic acid Me-Pro/Pip C6H9NO 111.0684140000 CSID: 10610754/CSID: 826 -N-Methyl-L-alanine/ABU/2-Methylalanine NMe-Ala/Abu/Aib C4H7NO 85.0527670000 CSID: 4450824/CSID: 6405/CSID: 5891 -DL-Ornithine Orn C5H10N2O 114.0793090000 CSID: 380 -DL-Proline Pro C5H7NO 97.0527670000 CSID: 594 -N-Acetylisoleucine N-Ac-Ile C8H13NO2 155.0946290000 CSID: 270615 -MeBmt MeBmt C10H17NO2 183.1259250000 CSID: 9944222 -N-methylleucine Me-Leu C7H13NO 127.0997100000 CSID: 493595 -DL-Valine/Isovaline Val/Ival C5H9NO 99.0684140000 CSID: 1148/CSID: 85483 -DL-Arginine/L-(+)-Arginine Arg/L-Arg C6H12N4O 156.1011140000 CSID: 227/CSID: 6082 -DL-Asparagine Asn C4H6N2O2 114.0429320000 CSID: 231 -DL-Aspartic acid Asp C4H5NO3 115.0269410000 CSID: 411 -DL-Cysteine Cys C3H5NOS 103.0091800000 CSID: 574 -DL-Glutamine Gln C5H8N2O2 128.0584350000 CSID: 718 -DL-Glutamic acid Glu C5H7NO3 129.0424290000 CSID: 591 -Glycine Gly C2H3NO 57.0214630000 CSID: 730 -DL-Histidine His C6H7N3O 137.0589080000 CSID: 752 -DL-Lysine Lys C6H12N2O 128.0949650000 CSID: 843 -Methionine Met C5H9NOS 131.0404910000 CSID: 853 -DL-Serine Ser C3H5NO2 87.0320300000 CSID: 597 -Threonine Thr C4H7NO2 101.0476780000 CSID: 200 -DL-Tryptophan Trp C11H10N2O 186.0793090000 CSID: 1116 -Tyrosine Tyr C9H9NO2 163.0633330000 CSID: 1121 -Lactic acid Lac C3H4O2 72.0211280000 CSID: 592 -2-hydroxyisovaleric acid Hiv C5H8O2 100.0524310000 CSID: 90190 -3-hydroxy-13-methyltetradecanoic acid C14:0-Me(13)-OH(3) C15H28O2 240.2089170000 CSID: 9218624 -N6-formyl-HydroxyOrnithine Fo-OH-Orn C6H10N2O3 158.0691470000 C(C(=O)O)(CCCN(C=O)O)N in CSID: 3294 -pyoverdin A chromophore derivate ChrPder C13H11N3O3 257.080048 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 -Succinic acid Suc C4H4O3 100.016045 CSID: 7634 +3-hydroxy-4-methyloctanoic acid C8:0-Me(4)-OH(3) C9H16O2 156.1150300000 CSID: 17247549 +DL-Phenylalanine Phe C9H9NO 147.0684140000 CSID: 969 +DL-Alanine/beta-Alanine/Sarcosine Ala/bAla/Sar C3H5NO 71.0371140000 CSID: 582/CSID: 234/CSID: 1057 +Leucine/Isoleucine/N-Methyl-L-valine Leu/Ile/NMe-Val C6H11NO 113.0840640000 CSID: 834/CSID: 769/CSID: 392093 +D-Leucic acid (2-hydroxy-4-methylpentanoic acid) C5:0-Me(4)-OH(2) C6H10O2 114.0680800000 CSID: 83753 +3-Methylproline/Pipecolic acid Me-Pro/Pip C6H9NO 111.0684140000 CSID: 10610754/CSID: 826 +N-Methyl-L-alanine/ABU/2-Methylalanine NMe-Ala/Abu/Aib C4H7NO 85.0527640000 CSID: 4450824/CSID: 6405/CSID: 5891 +DL-Ornithine Orn C5H10N2O 114.0793130000 CSID: 380 +DL-Proline Pro C5H7NO 97.0527640000 CSID: 594 +N-Acetylisoleucine N-Ac-Ile C8H13NO2 155.0946290000 CSID: 270615 +MeBmt MeBmt C10H17NO2 183.1259290000 CSID: 9944222 +N-methylleucine Me-Leu C7H13NO 127.0997140000 CSID: 493595 +DL-Valine/Isovaline Val/Ival C5H9NO 99.0684140000 CSID: 1148/CSID: 85483 +DL-Arginine/L-(+)-Arginine Arg/L-Arg C6H12N4O 156.1011110000 CSID: 227/CSID: 6082 +DL-Asparagine Asn C4H6N2O2 114.0429270000 CSID: 231 +DL-Aspartic acid Asp C4H5NO3 115.0269430000 CSID: 411 +DL-Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 +DL-Glutamine Gln C5H8N2O2 128.0585780000 CSID: 718 +DL-Glutamic acid Glu C5H7NO3 129.0425930000 CSID: 591 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +DL-Histidine His C6H7N3O 137.0589120000 CSID: 752 +DL-Lysine Lys C6H12N2O 128.0949630000 CSID: 843 +Methionine Met C5H9NOS 131.0404850000 CSID: 853 +DL-Serine Ser C3H5NO2 87.0320280000 CSID: 597 +Threonine Thr C4H7NO2 101.0476780000 CSID: 200 +DL-Tryptophan Trp C11H10N2O 186.0793130000 CSID: 1116 +Tyrosine Tyr C9H9NO2 163.0633290000 CSID: 1121 +Lactic acid Lac C3H4O2 72.0211290000 CSID: 592 +2-hydroxyisovaleric acid Hiv C5H8O2 100.0524300000 CSID: 90190 +3-hydroxy-13-methyltetradecanoic acid C14:0-Me(13)-OH(3) C15H28O2 240.2089300000 CSID: 9218624 +N6-formyl-HydroxyOrnithine Fo-OH-Orn C6H10N2O3 158.0691420000 C(C(=O)O)(CCCN(C=O)O)N in CSID: 3294 +pyoverdin A chromophore derivate ChrPder C13H11N3O3 257.0800410000 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 +Succinic acid Suc C4H4O3 100.0160440000 CSID: 7634 diff --git a/CycloBranch/BrickDatabases/db33_v2.txt b/CycloBranch/BrickDatabases/db33_v2.txt index c4609f1..339d154 100644 --- a/CycloBranch/BrickDatabases/db33_v2.txt +++ b/CycloBranch/BrickDatabases/db33_v2.txt @@ -1,33 +1,33 @@ -Glycine Gly C2H3NO 57.0214637236 CSID: 730 -DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371137878 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 -Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211293726 CSID: 592/CSID: 55423 -N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527638520 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 -DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320284099 CSID: 597/CSID: 64231/CSID: 10793 -DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527638520 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 -DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684139162 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 -Succinic acid Suc C4H4O3 100.0160439947 CSID: 7634 -2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524295010 CSID: 90190/CID: 5289545 -Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476784741 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 -DL-Cysteine Cys C3H5NOS 103.0091844778 CSID: 574 -3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684139162 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 -Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840639804 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 -DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429274472 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 -D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680795652 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 -DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793129535 CSID: 380/CSID: 64236 -DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430320 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 -N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140446 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 -DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585775114 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 -DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630177 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 -DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930962 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 -Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404846062 CSID: 853/CSID: 4450935 -DL-Histidine His C6H7N3O 137.0589118624 CSID: 752 -DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684139162 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 -N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946286667 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 -DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110281 PDB: ARG/PDB: DAR/CSID: 6082 -3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150297578 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 -N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691421977 PDB: FHO/PDB: FH7 -Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633285383 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 -N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259287951 CSID: 9944222/CSID: 16281719 -DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793129535 CSID: 1116/CSID: 8707 -3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089301430 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 -pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800412350 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +DL-Alanine/D-Alanine/beta-Alanine/N-Methyl-Glycine Ala/D-Ala/bAla/NMe-Gly C3H5NO 71.0371140000 CSID: 582/CSID: 64234/CSID: 234/CSID: 1057 +Lactic acid/D-lactic acid Lac/D-Lac C3H4O2 72.0211290000 CSID: 592/CSID: 55423 +N-Methyl-L-alanine/N-methyl-beta-alanine/alpha-aminobutyric acid/D-alpha-aminobutyric acid/2-Methylalanine/methyl alaninate NMe-Ala/NMe-bAla/Abu/D-Abu/Aib/D-3OMe-Ala C4H7NO 85.0527640000 CSID: 4450824/CSID: 68396/PDB: ABA/PDB: DBB/CSID: 5891/CSID: 99878 +DL-Serine/D-Serine/isoserine Ser/D-Ser/Iser C3H5NO2 87.0320280000 CSID: 597/CSID: 64231/CSID: 10793 +DL-Proline/D-Proline/2-methylamino-2-dehydrobutyric acid/norcoronamic acid Pro/D-Pro/2Dh-Mabu/norCMA C5H7NO 97.0527640000 CSID: 594/CSID: 8640/CSID: 16743754/CSID: 28708240 +DL-Valine/D-Valine/Isovaline/D-Isovaline/Norvaline/D-Norvaline/2-methyl-3-aminobutanoic acid/N-dimethyl-Alanine/3-amino-pentanoic acid Val/D-Val/Ival/D-Ival/Nva/D-Nva/Mab/NdMe-Ala/C5:0-NH2(3) C5H9NO 99.0684140000 CSID: 1148/CSID: 64635/CSID: 85483/PDB: DIV/CSID: 801/CSID: 388660/CSID: 471786/CSID: 9962964/CSID: 11271826 +Succinic acid Suc C4H4O3 100.0160440000 CSID: 7634 +2-hydroxyisovaleric acid/D-2-hydroxyisovalerate Hiv/D-Hiv C5H8O2 100.0524300000 CSID: 90190/CID: 5289545 +Threonine/D-Threonine/allo-Threonine/D-allo-Threonine/Homoserine/D-Homoserine/N-Methyl-Serine/N-Methyl-D-Serine/4-amino-3-hydroxybutyric acid Thr/D-Thr/aThr/D-aThr/Hse/D-Hse/NMe-Ser/D-NMe-Ser/OH-4Abu C4H7NO2 101.0476780000 PDB: THR/PDB: DTH/PDB: ALO/CSID: 81824/CSID: 758/CSID: 2006329/CSID: 481791/PDB: DSE/CSID: 2064 +DL-Cysteine Cys C3H5NOS 103.0091840000 CSID: 574 +3-Methylproline/4-Methylproline/homoproline/D-homoproline/coronamic acid 3Me-Pro/4Me-Pro/Hpr/D-Hpr/CMA C6H9NO 111.0684140000 CSID: 10610754/CSID: 312597/CSID: 826/CSID: 643442/CSID: 117751 +Leucine/D-Leucine/Isoleucine/D-Isoleucine/allo-Isoleucine/D-allo-Isoleucine/N-Methyl-L-valine/D-N-Methylvaline/3-Methylvaline/D-tert-Leu/2-methyl-3-aminopentanoic acid/D-N-methyl-norvaline Leu/D-Leu/Ile/D-Ile/aIle/D-aIle/NMe-Val/D-NMe-Val/t-Leu/D-t-Leu/Map/D-NMe-Nva C6H11NO 113.0840640000 CSID: 834/CSID: 388617/CSID: 769/CSID: 69017/CSID: 89698/CSID: 85019/CSID: 4225/CSID: 4225/CSID: 270637/CID: 6950340/CSID: 11643060/CSID: 10652938 +DL-Asparagine/D-Asparagine/N1-formyl-2.3-Diaminopropionic acid Asn/D-Asn/NFo-Dpr C4H6N2O2 114.0429270000 PDB: ASN/PDB: DSG/C(C(CN)NC=O)(=O)O in CSID: 8873525 +D-Leucic acid (2-hydroxy-4-methylpentanoic acid)/(R)-Leucic acid/3-hydroxyhexanoic acid/2-hydroxy-3-methyl-pentanoic acid/D-2-hydroxy-3-methyl-pentanoic acid C5:0-Me(4)-OH(2)/4Me-D-Hva/C6:0-OH(3)/Hmp/D-Hmp C6H10O2 114.0680800000 CSID: 83753/CSID: 388986/CSID: 133518/CSID: 144317/CSID: 144317 +DL-Ornithine/D-Ornithine Orn/D-Orn C5H10N2O 114.0793130000 CSID: 380/CSID: 64236 +DL-Aspartic acid/D-Aspartic acid/N-formyl-isoserine Asp/D-Asp/NFo-Iser C4H5NO3 115.0269430000 CSID: 411/CSID: 75697/C(C(C(=O)O)O)NC=O in CSID: 8503913 +N-Methyl-Leucine/D-N-methyl-Leucine/N-Methyl-Isoleucine/N-methyl-alloIsoleucine/D-N-methyl-alloIsoleucine/beta-methylisoleucine/homoisoleucine/alpha-ethylnorvaline/Dolavaline/2-methyl-3-aminohexadecanoic acid NMe-Leu/D-NMe-Leu/NMe-Ile/NMe-aIle/D-NMe-aIle/bMe-Ile/Hil/Et-Nva/Dov/C6:0-Me(2)-NH2(3) C7H13NO 127.0997140000 CSID: 493595/CSID: 493595/CSID: 487199/CCC(C)C(C(=O)O)NC in: NOR00428/CCC(C)C(C(=O)O)NC in: NOR00428/CSID: 19951406/CSID: 454232/CSID: 452678/CSID: 10731564/CSID: 21378848 +DL-Glutamine/D-Glutamine/N-methylasparagine/beta-methyl-asparagine/D-N2-methyl-asparagine/N1-acetyl-2.3-Diaminopropionic acid Gln/D-Gln/NMe-Asn/bMe-Asn/D-N2Me-Asn/NAc-Dpr C5H8N2O2 128.0585780000 PDB: GLN/PDB: DGN/CSID: 311563/CSID: 2284493/CSID: 288387/C(C(CN)NC(C)=O)(=O)O in CSID: 8570696 +DL-Lysine/D-Lysine/beta lysine/N-Hydroxy-histamine Lys/D-Lys/bLys/N-OH-Hta C6H12N2O 128.0949630000 CSID: 843/CSID: 51793/PDB: KBE/C1(CCCN1)CCNO in CSID: 4589228 +DL-Glutamic acid/D-Glutamic Acid/beta-methyl-aspartic acid/D-beta-methyl-aspartic acid/beta-methoxy-aspartic acid/O-acetyl-Serine Glu/D-Glu/bMe-Asp/D-bMe-Asp/bOMe-Asp/Ac-Ser C5H7NO3 129.0425930000 CSID: 591/PDB: DGL/PDB: 2AS/PDB: ACB/CSID: 92764/CSID: 184 +Methionine/N.S-dimethylcysteine Met/diMe-Cys C5H9NOS 131.0404850000 CSID: 853/CSID: 4450935 +DL-Histidine His C6H7N3O 137.0589120000 CSID: 752 +DL-Phenylalanine/D-Phenylalanine/beta-phenylalanine/D-beta-phenylalanine/N-methyl-phenylglycine Phe/D-Phe/bPhe/D-bPhe/NMe-Ph-Gly C9H9NO 147.0684140000 CSID: 969/CSID: 64639/CSID: 62403/CSID: 598357/CSID: 198596 +N-Acetylisoleucine/N-acetyl-Leucine/O-desmethyldolaproine NAc-Ile/NAc-Leu/dDap C8H13NO2 155.0946290000 CSID: 270615/CSID: 1918/C(C1CCCN1)(C(C(=O)O)C)O in CSID: 9938808 +DL-Arginine/D-Arginine/L-(+)-Arginine Arg/D-Arg/L-Arg C6H12N4O 156.1011110000 PDB: ARG/PDB: DAR/CSID: 6082 +3-hydroxy-4-methyloctanoic acid/3-hydroxy-nonanoic acid/3-hydroxy-isononanoic acid/3-hydroxy-6-methyloctanoic acid C8:0-Me(4)-OH(3)/C9:0-OH(3)/iC9:0-OH(3)/aC9:0-OH(3) C9H16O2 156.1150300000 CSID: 17247549/CSID: 33630/CID: 22472006/CSID: 10361823 +N6-formyl-HydroxyOrnithine/D-formyl-hydroxyOrnithine Fo-OH-Orn/D-Fo-OH-Orn C6H10N2O3 158.0691420000 PDB: FHO/PDB: FH7 +Tyrosine/D-Tyrosine/beta-tyrosine/Phenylserine/N-methyl-HydroxyPhenylGlycine Tyr/D-Tyr/bTyr/Ph-Ser/NMe-Hpg C9H9NO2 163.0633290000 CSID: 1121/CSID: 64252/CSID: 389285/CSID: 84951/CID: 15118056 +N-methyl-butenylthreonine/2-amino-8-oxo-decanoic acid NMe-Bmt/C10:0-NH2(2)-oxo(8) C10H17NO2 183.1259290000 CSID: 9944222/CSID: 16281719 +DL-Tryptophan/D-Tryptophan Trp/D-Trp C11H10N2O 186.0793130000 CSID: 1116/CSID: 8707 +3-hydroxy-13-methyltetradecanoic acid/3-hydroxy-pentadecanoic acid/3-hydroxy-isopentadecanoic acid/3-hydroxy-12-methyl-tetradecanoic acid C14:0-Me(13)-OH(3)/C15:0-OH(3)/iC15:0-OH(3)/aC15:0-OH(3) C15H28O2 240.2089300000 CSID: 9218624/CSID: 158374/CSID: 9218624/C(CC(CCCCCCCCC(CC)C)O)(O)=O in: NOR00211 +pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 C1=C(C(=CC2=C1N3C(C(=C2)N)=NC(CC3)C(O)=O)O)O in CSID: 0 diff --git a/CycloBranch/BrickDatabases/inhouse_siderophores_blocks.txt b/CycloBranch/BrickDatabases/inhouse_siderophores_blocks.txt index f74b510..ddaf0c7 100644 --- a/CycloBranch/BrickDatabases/inhouse_siderophores_blocks.txt +++ b/CycloBranch/BrickDatabases/inhouse_siderophores_blocks.txt @@ -1,19 +1,19 @@ -Glycine Gly C2H3NO 57.0214640000 CSID: 730 -succinic semialdehyde Suc C4H4O2 84.0211290000 CSID: 1080 -3-Hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367790000 CSID: 428 -(-2H) Putrescine Put C4N2H10 86.0843980000 CSID: 13837702 -DL-Serine Ser C3H5NO2 87.0320280000 CSID: 597 -Succinamic acid Suca C4H5NO2 99.0320280000 CSID: 12005 -Threonine Thr C4H7NO2 101.0476780000 CSID: 200 -(2E)-5-Hydroxy-3-methyl-2-pentenoic acid OH-MP C6H8O2 112.0524300000 CSID: 32988805 -3-Hydroxyhexanoic acid C6:0-OH(3) C6H10O2 114.0680800000 CSID: 133518 -(-2H) N-Hydroxy-1.5-pentanediamine Hpd C5H12N2O 116.0949630000 CSID: 13660043 -3-Methylglutaconic acid Mga C6H6O3 126.0316940000 CSID: 1267861 -Lysine Lys C6H12N2O 128.0949630000 CSID: 843 -N5-hydroxy ornithine OH-Orn C5H10N2O2 130.0742280000 CSID: 148381 -D-Hydroxyaspartic acid D-OH-Asp C4H5NO4 131.0218580000 CSID: 5232 -3-Hydroxyoctanoic acid C8:0-OH(3) C8H14O2 142.0993800000 CSID: 24791 -Arginine Arg C6H12N4O 156.1011110000 CSID: 227 -N5-formyl-N5-hydroxyornithine/N6-formyl-HydroxyOrnithine N5-Fo-OH-Orn/Fo-OH-Orn C6H10N2O3 158.0691420000 CSID: 25057473/PDB: FHO -N2-acetyl-N5-hydroxy-L-ornithine/D-N-acetyl-HydroxyOrnithine/2-acetamido-5-(hydroxyamino)pentanoic acid N2Ac-OH-Orn/D-Ac-OH-Orn/Ahp C7H12N2O3 172.0847920000 CSID: 0/CSID: 3670289/C(C(CCCNO)NC(=O)C)(O)=O in CSID: 0 -Pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 CSID: 0 +Glycine Gly C2H3NO 57.0214640000 CSID: 730 +succinic semialdehyde Suc C4H4O2 84.0211290000 CSID: 1080 +3-Hydroxybutanoic acid C4:0-OH(3) C4H6O2 86.0367790000 CSID: 428 +(-2H) Putrescine Put C4N2H10 86.0843980000 CSID: 13837702 +DL-Serine Ser C3H5NO2 87.0320280000 CSID: 597 +Succinamic acid Suca C4H5NO2 99.0320280000 CSID: 12005 +Threonine Thr C4H7NO2 101.0476780000 CSID: 200 +(2E)-5-Hydroxy-3-methyl-2-pentenoic acid OH-MP C6H8O2 112.0524300000 CSID: 32988805 +3-Hydroxyhexanoic acid C6:0-OH(3) C6H10O2 114.0680800000 CSID: 133518 +(-2H) N-Hydroxy-1.5-pentanediamine Hpd C5H12N2O 116.0949630000 CSID: 13660043 +3-Methylglutaconic acid Mga C6H6O3 126.0316940000 CSID: 1267861 +Lysine Lys C6H12N2O 128.0949630000 CSID: 843 +N5-hydroxy ornithine OH-Orn C5H10N2O2 130.0742280000 CSID: 148381 +D-Hydroxyaspartic acid D-OH-Asp C4H5NO4 131.0218580000 CSID: 5232 +3-Hydroxyoctanoic acid C8:0-OH(3) C8H14O2 142.0993800000 CSID: 24791 +Arginine Arg C6H12N4O 156.1011110000 CSID: 227 +N5-formyl-N5-hydroxyornithine/N6-formyl-HydroxyOrnithine N5-Fo-OH-Orn/Fo-OH-Orn C6H10N2O3 158.0691420000 CSID: 25057473/PDB: FHO +N2-acetyl-N5-hydroxy-L-ornithine/D-N-acetyl-HydroxyOrnithine/2-acetamido-5-(hydroxyamino)pentanoic acid N2Ac-OH-Orn/D-Ac-OH-Orn/Ahp C7H12N2O3 172.0847920000 CSID: 0/CSID: 3670289/C(C(CCCNO)NC(=O)C)(O)=O in CSID: 0 +Pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 CSID: 0 diff --git a/CycloBranch/BrickDatabases/pyoverdinDE_blocks.txt b/CycloBranch/BrickDatabases/pyoverdinDE_blocks.txt index dbc6ef7..e37d30e 100644 --- a/CycloBranch/BrickDatabases/pyoverdinDE_blocks.txt +++ b/CycloBranch/BrickDatabases/pyoverdinDE_blocks.txt @@ -1,8 +1,8 @@ -Succinic acid Succ C4H4O3 100.0160440000 CSID: 1080 -Serine Ser C3H5NO2 87.0320280000 CSID: 597 -Succinamic acid Suca C4H5NO2 99.0320280000 CSID: 12005 -Threonine Thr C4H7NO2 101.0476780000 CSID: 200 -Lysine Lys C6H12N2O 128.0949630000 CSID: 843 -Arginine Arg C6H12N4O 156.1011110000 CSID: 227 -N5-formyl-N5-hydroxyornithine N5-Fo-OH-Orn C6H10N2O3 158.0691420000 CSID: 25057473 -Pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 CSID: 0 +Succinic acid Succ C4H4O3 100.0160440000 CSID: 1080 +Serine Ser C3H5NO2 87.0320280000 CSID: 597 +Succinamic acid Suca C4H5NO2 99.0320280000 CSID: 12005 +Threonine Thr C4H7NO2 101.0476780000 CSID: 200 +Lysine Lys C6H12N2O 128.0949630000 CSID: 843 +Arginine Arg C6H12N4O 156.1011110000 CSID: 227 +N5-formyl-N5-hydroxyornithine N5-Fo-OH-Orn C6H10N2O3 158.0691420000 CSID: 25057473 +Pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 CSID: 0 diff --git a/CycloBranch/BrickDatabases/pyoverdinDE_blocks_retro_diels.txt b/CycloBranch/BrickDatabases/pyoverdinDE_blocks_retro_diels.txt index c82a633..fb7c137 100644 --- a/CycloBranch/BrickDatabases/pyoverdinDE_blocks_retro_diels.txt +++ b/CycloBranch/BrickDatabases/pyoverdinDE_blocks_retro_diels.txt @@ -1,10 +1,10 @@ -Arginine Arg C6H12N4O 156.1011110000 CSID: 227 -Lysine Lys C6H12N2O 128.0949630000 CSID: 843 -N5-formyl-N5-hydroxyornithine N5-Fo-OH-Orn C6H10N2O3 158.0691420000 CSID: 25057473 -Pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 CSID: 0 -Pyoverdin Pa A chromophore - part 1 ChrPaA1 C10H9N3O2 203.0694770000 CSID: 0 -Pyoverdin Pa A chromophore - part 2 ChrPaA2 C3H2O 54.0105650000 CSID: 0 -Serine Ser C3H5NO2 87.0320280000 CSID: 597 -Succinamic acid Suca C4H5NO2 99.0320280000 CSID: 12005 -Succinic acid Succ C4H4O3 100.0160440000 CSID: 1080 -Threonine Thr C4H7NO2 101.0476780000 CSID: 200 +Arginine Arg C6H12N4O 156.1011110000 CSID: 227 +Lysine Lys C6H12N2O 128.0949630000 CSID: 843 +N5-formyl-N5-hydroxyornithine N5-Fo-OH-Orn C6H10N2O3 158.0691420000 CSID: 25057473 +Pyoverdin Pa A chromophore ChrPaA C13H11N3O3 257.0800410000 CSID: 0 +Pyoverdin Pa A chromophore - part 1 ChrPaA1 C10H9N3O2 203.0694770000 CSID: 0 +Pyoverdin Pa A chromophore - part 2 ChrPaA2 C3H2O 54.0105650000 CSID: 0 +Serine Ser C3H5NO2 87.0320280000 CSID: 597 +Succinamic acid Suca C4H5NO2 99.0320280000 CSID: 12005 +Succinic acid Succ C4H4O3 100.0160440000 CSID: 1080 +Threonine Thr C4H7NO2 101.0476780000 CSID: 200 diff --git a/CycloBranch/CycloBranch-Linux.pro b/CycloBranch/CycloBranch-Linux.pro index 0bf006b..1dacae9 100644 --- a/CycloBranch/CycloBranch-Linux.pro +++ b/CycloBranch/CycloBranch-Linux.pro @@ -7,7 +7,7 @@ TARGET = CycloBranch QT += core gui widgets printsupport svg INCLUDEPATH += . core gui parallel QMAKE_CXXFLAGS += -std=c++11 -DLINUX -m64 -QMAKE_LIBS += -lboost_regex -lxerces-c +QMAKE_LIBS += -lboost_regex -lboost_iostreams -lxerces-c OBJECTS_DIR = build/ MOC_DIR = moc/ diff --git a/CycloBranch/CycloBranch-MacOSX.pro b/CycloBranch/CycloBranch-MacOSX.pro index d4b40fd..18c60cc 100644 --- a/CycloBranch/CycloBranch-MacOSX.pro +++ b/CycloBranch/CycloBranch-MacOSX.pro @@ -7,7 +7,7 @@ TARGET = CycloBranch QT += core gui widgets printsupport svg INCLUDEPATH += . core gui parallel /usr/local/opt/boost/include /usr/local/opt/xerces-c/include QMAKE_CXXFLAGS += -std=c++11 -DMACOSX -m64 -QMAKE_LIBS += -lboost_regex -lxerces-c +QMAKE_LIBS += -lboost_regex -lboost_iostreams -lxerces-c QMAKE_LIBDIR = /usr/local/opt/boost/lib /usr/local/opt/xerces-c/lib OBJECTS_DIR = build/ MOC_DIR = moc/ diff --git a/CycloBranch/CycloBranch.vcxproj b/CycloBranch/CycloBranch.vcxproj index ba52ae1..d3a4baf 100644 --- a/CycloBranch/CycloBranch.vcxproj +++ b/CycloBranch/CycloBranch.vcxproj @@ -1,5 +1,5 @@  - + Debug @@ -22,23 +22,24 @@ {B12702AD-ABFB-343A-A199-8E24837244A3} Qt4VSv1.0 CycloBranch + 10.0.17763.0 Application - v110 + v141 Application - v110 + v141 Application - v110 + v141 Application - v110 + v141 @@ -74,7 +75,7 @@ - UNICODE;WIN32;WIN64;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;WIN64;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtPrintSupport;$(QTDIR)\include\QtSvg;%(AdditionalIncludeDirectories) Disabled ProgramDatabase @@ -91,7 +92,7 @@ - UNICODE;WIN32;WIN64;QT_DLL;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;WIN64;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtPrintSupport;$(QTDIR)\include\QtSvg;%(AdditionalIncludeDirectories) Disabled ProgramDatabase @@ -108,7 +109,7 @@ - UNICODE;WIN32;WIN64;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) + UNICODE;WIN32;WIN64;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) .\GeneratedFiles;.;$(QTDIR)\include;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtPrintSupport;$(QTDIR)\include\QtSvg;%(AdditionalIncludeDirectories) MultiThreadedDLL @@ -124,8 +125,8 @@ - UNICODE;WIN32;WIN64;QT_DLL;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) - .;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtPrintSupport;C:\boost_1_57_0\;C:\xerces-c-3.1.1\include + UNICODE;WIN32;WIN64;QT_NO_DEBUG;NDEBUG;QT_CORE_LIB;QT_GUI_LIB;QT_WIDGETS_LIB;QT_PRINTSUPPORT_LIB;QT_SVG_LIB;%(PreprocessorDefinitions) + .;.\GeneratedFiles;.\GeneratedFiles\$(ConfigurationName);$(QTDIR)\include;$(QTDIR)\include\QtCore;$(QTDIR)\include\QtGui;$(QTDIR)\include\QtWidgets;$(QTDIR)\include\QtSvg;$(QTDIR)\include\QtPrintSupport;C:\boost_1_71_0;C:\xerces-c-3.1.1\include;%(AdditionalIncludeDirectories) ProgramDatabase MultiThreadedDLL true @@ -138,9 +139,9 @@ Windows $(OutDir)\$(ProjectName).exe - $(QTDIR)\lib;C:\boost_1_57_0\lib64-msvc-11.0;C:\xerces-c-3.1.1\lib;%(AdditionalLibraryDirectories) + $(QTDIR)\lib;C:\boost_1_71_0\lib64-msvc-14.1;C:\xerces-c-3.1.1\lib;%(AdditionalLibraryDirectories) false - qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Svg.lib;Qt5PrintSupport.lib;libboost_regex-vc110-mt-1_57.lib;xerces-c_3.lib + shell32.lib;qtmain.lib;Qt5Core.lib;Qt5Gui.lib;Qt5Widgets.lib;Qt5Svg.lib;Qt5PrintSupport.lib;xerces-c_3.lib true true UseLinkTimeCodeGeneration @@ -553,415 +554,415 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cNeutralLossesListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cNeutralLossesListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cNeutralLossesListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cNeutralLossesListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cChromatogramWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMultipleButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMultipleButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMultipleButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMultipleButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cViewButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cViewButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cViewButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cViewButtonDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cComboBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cComboBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cComboBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cComboBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCheckBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCheckBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCheckBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCheckBoxDelegate.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindowProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindowProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindowProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindowProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableProxyModel.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindowWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cImageWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSummaryPeaksTableWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cHTMLExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cExportDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFindDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFindDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFindDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFindDialog.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumSceneWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumSceneWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumSceneWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumSceneWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cEventFilter.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cEventFilter.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cEventFilter.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cEventFilter.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" @@ -993,177 +994,177 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cDrawPeptideWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cDrawPeptideWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cDrawPeptideWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cDrawPeptideWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cModificationsWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSequenceDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBricksDatabaseWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cLinearWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cLinearWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cLinearWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cLinearWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cCyclicWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchedWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchedWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchedWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cBranchedWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFragmentIonsListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFragmentIonsListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFragmentIonsListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cFragmentIonsListWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphReaderThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphReaderThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphReaderThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphReaderThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" Moc%27ing cSpectrumComparatorThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" Moc%27ing cSpectrumComparatorThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" Moc%27ing cSpectrumComparatorThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" Moc%27ing cSpectrumComparatorThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) $(QTDIR)\bin\moc.exe;%(FullPath) $(QTDIR)\bin\moc.exe;%(FullPath) @@ -1173,19 +1174,19 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cSpectrumDetailWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" @@ -1217,91 +1218,91 @@ $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainWindow.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cMainThread.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cParametersWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cParametersWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cParametersWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cParametersWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cGraphWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cAboutWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cAboutWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cAboutWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I.\GeneratedFiles" "-I." "-I$(QTDIR)\include" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtPrintSupport" "-I$(QTDIR)\include\QtSvg" $(QTDIR)\bin\moc.exe;%(FullPath) Moc%27ing cAboutWidget.h... .\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp - "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_DLL -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)\." "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_57_0" "-IC:\xerces-c-3.1.1\include" + "$(QTDIR)\bin\moc.exe" "%(FullPath)" -o ".\GeneratedFiles\$(ConfigurationName)\moc_%(Filename).cpp" -DUNICODE -DWIN32 -DWIN64 -DQT_NO_DEBUG -DNDEBUG -DQT_CORE_LIB -DQT_GUI_LIB -DQT_WIDGETS_LIB -DQT_PRINTSUPPORT_LIB -DQT_SVG_LIB -D%(PreprocessorDefinitions) "-I." "-I.\GeneratedFiles" "-I.\GeneratedFiles\$(ConfigurationName)" "-I$(QTDIR)\include" "-I$(QTDIR)\include\QtCore" "-I$(QTDIR)\include\QtGui" "-I$(QTDIR)\include\QtWidgets" "-I$(QTDIR)\include\QtSvg" "-I$(QTDIR)\include\QtPrintSupport" "-IC:\boost_1_71_0" "-IC:\xerces-c-3.1.1\include" @@ -1332,7 +1333,7 @@ - + \ No newline at end of file diff --git a/CycloBranch/CycloBranch.vcxproj.user b/CycloBranch/CycloBranch.vcxproj.user index b65447a..6b88773 100644 --- a/CycloBranch/CycloBranch.vcxproj.user +++ b/CycloBranch/CycloBranch.vcxproj.user @@ -9,17 +9,17 @@ C:\Qt\5.1.1\msvc2012_64\ - C:\Qt\Qt5.2.1\5.2.1\msvc2012_64 - PATH=$(QTDIR)\bin%3b"$(QTDIR)\bin%3b$(PATH) + C:\Qt\Qt5.13.0\5.13.0\msvc2017_64 WindowsLocalDebugger + PATH=$(QTDIR)\bin%3b"$(QTDIR)\bin%3b$(PATH) - C:\Qt\Qt5.2.1\5.2.1\msvc2012_64 - PATH=$(QTDIR)\bin%3b%PATH%%3b"$(PATH) + C:\Qt\Qt5.13.0\5.13.0\msvc2017_64 WindowsLocalDebugger + PATH=$(QTDIR)\bin%3b%PATH%%3b"$(PATH) \ No newline at end of file diff --git a/CycloBranch/External/linux/any2mzml.sh b/CycloBranch/External/linux/any2mzml.sh new file mode 100644 index 0000000..1952322 --- /dev/null +++ b/CycloBranch/External/linux/any2mzml.sh @@ -0,0 +1,3 @@ +#!/bin/bash +name="$@" +FileConverter -in "$name" -out "$name"".mzML" diff --git a/CycloBranch/External/linux/correctprofile.sh b/CycloBranch/External/linux/correctprofile.sh index 1e283e8..d750724 100644 --- a/CycloBranch/External/linux/correctprofile.sh +++ b/CycloBranch/External/linux/correctprofile.sh @@ -3,9 +3,9 @@ SAVEIFS=$IFS IFS=$',' read name fwhm <<< $@ IFS=$SAVEIFS FileConverter -in "$name"".mgf" -out "$name"".FileConverter.mzML" -NoiseFilterGaussian -in "$name"".FileConverter.mzML" -out "$name"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm +#NoiseFilterGaussian -in "$name"".FileConverter.mzML" -out "$name"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm rm "$name"".mzML" -BaselineFilter -in "$name"".NoiseFilterGaussian.mzML" -out "$name"".mzML" +BaselineFilter -in "$name"".FileConverter.mzML" -out "$name"".mzML" rm "$name"".mgf" rm "$name"".FileConverter.mzML" -rm "$name"".NoiseFilterGaussian.mzML" +#rm "$name"".NoiseFilterGaussian.mzML" diff --git a/CycloBranch/External/linux/raw2peaks.sh b/CycloBranch/External/linux/raw2peaks.sh index 63191e7..5c5aae8 100644 --- a/CycloBranch/External/linux/raw2peaks.sh +++ b/CycloBranch/External/linux/raw2peaks.sh @@ -11,14 +11,14 @@ for i in "$name""00"*".mgf" do echo "Converting the file ""$i" FileConverter -in "$i" -out "$i"".FileConverter.mzML" -NoiseFilterGaussian -in "$i"".FileConverter.mzML" -out "$i"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm -BaselineFilter -in "$i"".NoiseFilterGaussian.mzML" -out "$i"".BaselineFilter.mzML" +#NoiseFilterGaussian -in "$i"".FileConverter.mzML" -out "$i"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm +BaselineFilter -in "$i"".FileConverter.mzML" -out "$i"".BaselineFilter.mzML" PeakPickerHiRes -in "$i"".BaselineFilter.mzML" -out "$i"".PeakPickerHiRes.mzML" -algorithm:ms_levels 1 2 -algorithm:signal_to_noise 4 FileConverter -in "$i"".PeakPickerHiRes.mzML" -out "$i"".FileConverter2.mgf" cat "$i"".FileConverter2.mgf" >> "$name""mgf" rm "$i" rm "$i"".FileConverter.mzML" -rm "$i"".NoiseFilterGaussian.mzML" +#rm "$i"".NoiseFilterGaussian.mzML" rm "$i"".BaselineFilter.mzML" rm "$i"".PeakPickerHiRes.mzML" rm "$i"".FileConverter2.mgf" diff --git a/CycloBranch/External/macosx/any2mzml.sh b/CycloBranch/External/macosx/any2mzml.sh new file mode 100644 index 0000000..a6f9d15 --- /dev/null +++ b/CycloBranch/External/macosx/any2mzml.sh @@ -0,0 +1,2 @@ +name="$@" +FileConverter -in "$name" -out "$name"".mzML" diff --git a/CycloBranch/External/macosx/correctprofile.sh b/CycloBranch/External/macosx/correctprofile.sh index 23ed9df..2a8f265 100644 --- a/CycloBranch/External/macosx/correctprofile.sh +++ b/CycloBranch/External/macosx/correctprofile.sh @@ -1 +1 @@ -SAVEIFS=$IFS IFS=$',' read name fwhm <<< $@ IFS=$SAVEIFS FileConverter -in "$name"".mgf" -out "$name"".FileConverter.mzML" NoiseFilterGaussian -in "$name"".FileConverter.mzML" -out "$name"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm rm "$name"".mzML" BaselineFilter -in "$name"".NoiseFilterGaussian.mzML" -out "$name"".mzML" rm "$name"".mgf" rm "$name"".FileConverter.mzML" rm "$name"".NoiseFilterGaussian.mzML" \ No newline at end of file +SAVEIFS=$IFS IFS=$',' read name fwhm <<< $@ IFS=$SAVEIFS FileConverter -in "$name"".mgf" -out "$name"".FileConverter.mzML" #NoiseFilterGaussian -in "$name"".FileConverter.mzML" -out "$name"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm rm "$name"".mzML" BaselineFilter -in "$name"".FileConverter.mzML" -out "$name"".mzML" rm "$name"".mgf" rm "$name"".FileConverter.mzML" #rm "$name"".NoiseFilterGaussian.mzML" \ No newline at end of file diff --git a/CycloBranch/External/macosx/raw2peaks.sh b/CycloBranch/External/macosx/raw2peaks.sh index b05156d..9a062ac 100644 --- a/CycloBranch/External/macosx/raw2peaks.sh +++ b/CycloBranch/External/macosx/raw2peaks.sh @@ -10,14 +10,14 @@ for i in "$name""00"*".mgf" do echo "Converting the file ""$i" FileConverter -in "$i" -out "$i"".FileConverter.mzML" -NoiseFilterGaussian -in "$i"".FileConverter.mzML" -out "$i"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm -BaselineFilter -in "$i"".NoiseFilterGaussian.mzML" -out "$i"".BaselineFilter.mzML" +#NoiseFilterGaussian -in "$i"".FileConverter.mzML" -out "$i"".NoiseFilterGaussian.mzML" -algorithm:gaussian_width $fwhm +BaselineFilter -in "$i"".FileConverter.mzML" -out "$i"".BaselineFilter.mzML" PeakPickerHiRes -in "$i"".BaselineFilter.mzML" -out "$i"".PeakPickerHiRes.mzML" -algorithm:ms_levels 1 2 -algorithm:signal_to_noise 4 FileConverter -in "$i"".PeakPickerHiRes.mzML" -out "$i"".FileConverter2.mgf" cat "$i"".FileConverter2.mgf" >> "$name""mgf" rm "$i" rm "$i"".FileConverter.mzML" -rm "$i"".NoiseFilterGaussian.mzML" +#rm "$i"".NoiseFilterGaussian.mzML" rm "$i"".BaselineFilter.mzML" rm "$i"".PeakPickerHiRes.mzML" rm "$i"".FileConverter2.mgf" diff --git a/CycloBranch/External/windows/any2mzml.bat b/CycloBranch/External/windows/any2mzml.bat new file mode 100644 index 0000000..efb6f83 --- /dev/null +++ b/CycloBranch/External/windows/any2mzml.bat @@ -0,0 +1,2 @@ +SET PATH=%PATH:C:\Xcalibur\system\programs;=% +FileConverter.exe -in %1 -out %1.mzML \ No newline at end of file diff --git a/CycloBranch/External/windows/baf2mzml.bat b/CycloBranch/External/windows/baf2mzml.bat new file mode 100644 index 0000000..e22a8bb --- /dev/null +++ b/CycloBranch/External/windows/baf2mzml.bat @@ -0,0 +1,3 @@ +@echo off +set PATH=%PATH% +"%programfiles(x86)%\Bruker Daltonik\CompassXport\CompassXport.exe" -mode 2 -a "%~f1" -o "%~f1.mzML" 1>NUL diff --git a/CycloBranch/External/windows/correctprofile.bat b/CycloBranch/External/windows/correctprofile.bat index ce03f08..5d7f287 100644 --- a/CycloBranch/External/windows/correctprofile.bat +++ b/CycloBranch/External/windows/correctprofile.bat @@ -2,10 +2,10 @@ SET PATH=%PATH:C:\Xcalibur\system\programs;=% FileConverter.exe -in "%~f1.mgf" -out "%~f1.FileConverter.mzML" 1>NUL -NoiseFilterGaussian.exe -in "%~f1.FileConverter.mzML" -out "%~f1.NoiseFilterGaussian.mzML" -algorithm:gaussian_width %2 1>NUL +rem NoiseFilterGaussian.exe -in "%~f1.FileConverter.mzML" -out "%~f1.NoiseFilterGaussian.mzML" -algorithm:gaussian_width %2 1>NUL del "%~f1.mzML" 2>NUL -BaselineFilter.exe -in "%~f1.NoiseFilterGaussian.mzML" -out "%~f1.mzML" 1>NUL +BaselineFilter.exe -in "%~f1.FileConverter.mzML" -out "%~f1.mzML" 1>NUL del "%~f1.mgf" 2>NUL del "%~f1.FileConverter.mzML" 2>NUL -del "%~f1.NoiseFilterGaussian.mzML" 2>NUL +rem del "%~f1.NoiseFilterGaussian.mzML" 2>NUL diff --git a/CycloBranch/External/windows/raw2mzml.bat b/CycloBranch/External/windows/raw2mzml.bat index 6e5813c..fc5b04c 100644 --- a/CycloBranch/External/windows/raw2mzml.bat +++ b/CycloBranch/External/windows/raw2mzml.bat @@ -1,2 +1,2 @@ SET PATH=%PATH% -msconvert.exe %1 --mzML -o "%~d1%~p1%\" \ No newline at end of file +msconvert.exe %1 --mzML --inten64 -o "%~d1%~p1\" diff --git a/CycloBranch/External/windows/raw2mzmlpeaks.bat b/CycloBranch/External/windows/raw2mzmlpeaks.bat new file mode 100644 index 0000000..05ddde3 --- /dev/null +++ b/CycloBranch/External/windows/raw2mzmlpeaks.bat @@ -0,0 +1,2 @@ +SET PATH=%PATH% +msconvert.exe %1 --mzML --inten64 --filter "peakPicking vendor msLevel=1-" -o "%~d1%~p1\" --outfile "%~n1_converted.mzML" \ No newline at end of file diff --git a/CycloBranch/External/windows/raw2peaks.bat b/CycloBranch/External/windows/raw2peaks.bat index 145bd7c..850a034 100644 --- a/CycloBranch/External/windows/raw2peaks.bat +++ b/CycloBranch/External/windows/raw2peaks.bat @@ -5,14 +5,14 @@ SET PATH=%PATH:C:\Xcalibur\system\programs;=% for %%f in ("%~d1%~p1%~n1.00*.mgf") do ( echo Converting the file %%f FileConverter.exe -in "%%f" -out "%%f.FileConverter.mzML" 1>NUL -NoiseFilterGaussian.exe -in "%%f.FileConverter.mzML" -out "%%f.NoiseFilterGaussian.mzML" -algorithm:gaussian_width %2 1>NUL -BaselineFilter.exe -in "%%f.NoiseFilterGaussian.mzML" -out "%%f.BaselineFilter.mzML" 1>NUL +rem NoiseFilterGaussian.exe -in "%%f.FileConverter.mzML" -out "%%f.NoiseFilterGaussian.mzML" -algorithm:gaussian_width %2 1>NUL +BaselineFilter.exe -in "%%f.FileConverter.mzML" -out "%%f.BaselineFilter.mzML" 1>NUL PeakPickerHiRes.exe -in "%%f.BaselineFilter.mzML" -out "%%f.PeakPickerHiRes.mzML" -algorithm:ms_levels 1 2 -algorithm:signal_to_noise 4 1>NUL FileConverter.exe -in "%%f.PeakPickerHiRes.mzML" -out "%%f.FileConverter2.mgf" 1>NUL (type "%%f.FileConverter2.mgf" 2>NUL) >> "%~1mgf" del "%%f" 2>NUL del "%%f.FileConverter.mzML" 2>NUL -del "%%f.NoiseFilterGaussian.mzML" 2>NUL +rem del "%%f.NoiseFilterGaussian.mzML" 2>NUL del "%%f.BaselineFilter.mzML" 2>NUL del "%%f.PeakPickerHiRes.mzML" 2>NUL del "%%f.FileConverter2.mgf" 2>NUL diff --git a/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt b/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt index d812d00..459a04f 100644 --- a/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt +++ b/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt @@ -5,15 +5,15 @@ other Nicotinic acid C6H5NO2 123.0320284099 other Hydroxyquinone C6H4O3 124.0160439947 other Orcinol C7H8O2 124.0524295010 other Epoxysuccinic acid C4H4O5 132.0058732389 -other salicylic acid C7H6O3 138.0316940589 +other salicylic acid C7H6O3 138.0316940589 SB: 73 other Quinone C6H4O4 140.0109586168 -other 2.3-dihydroxybenzoic acid C7H6O4 154.0266086810 -other 3.4-dihydroxybenzoic acid (Protocatechuic acid) C7H6O4 154.0266086810 -other 3.5-dihydroxybenzoic acid C7H6O4 154.0266086810 +other 2.3-dihydroxybenzoic acid C7H6O4 154.0266086810 SB: 54 +other 3.4-dihydroxybenzoic acid (Protocatechuic acid) C7H6O4 154.0266086810 SB: 57 +other 3.5-dihydroxybenzoic acid C7H6O4 154.0266086810 SB: 202 other 3.4-dihydroxytoluquinone C7H6O4 154.0266086810 other Phyllostin C7H6O4 154.0266086810 other cyclo-(Pro-Gly) C7H10N2O2 154.0742275756 -other Cepabactin C7H9N1O3 155.0582431604 +other Cepabactin C7H9N1O3 155.0582431604 SB: 72 other 1.8-dihydroxynaphthalene C10H8O2 160.0524295010 other Formamide. N-[2-(4-hydroxyphenyl)ethenyl]- C9H9NO2 163.0633285383 other Phthalic acid C8H6O4 166.0266086810 @@ -31,7 +31,7 @@ other cyclo-(Pro-Ser) C8H12N2O3 184.0847922619 other cyclo-(Ala-trans-4-OH-Pro) C8H12N2O3 184.0847922619 other Dihydrospinulosin quinol C8H12O5 188.0684734957 other 2-Hydroxyjuglone C10H6O4 190.0266086810 -other Citrate C6H8O7 192.0270026115 +other Citrate C6H8O7 192.0270026115 SB: 282 other 1.3.6.8-Naphthalenetetrol C10H8O4 192.0422587452 other trans-3.4-dihydro-3.4.8-trihydroxynaphthalen-1(2H)-one C10H10O4 194.0579088094 other cis-3.4-dihydro-3.4.8-trihydroxynaphthalen-1(2H)-one C10H10O4 194.0579088094 @@ -40,7 +40,7 @@ other Anthrone C14H10O 194.0731649431 other Cyclo(L-Pro-L-Pro) C10H14N2O2 194.1055277040 other 1H-Naphtho[2.1-b]pyran-1-one C13H8O2 196.0524295010 other Pyrrolo[1.2-a]pyrazine-1.4-dione C10H16N2O2 196.1211777682 -other Pyridine-2.6-bis(thiocarboxylic acid) C7H5N1O2S2 198.9761697899 +other Pyridine-2.6-bis(thiocarboxylic acid) C7H5N1O2S2 198.9761697899 SB: 93 other cyclo-(Ser-trans-4-OH-Pro) C8H12N2O4 200.0797068840 other Spinulosin hydrate C8H10O6 202.0477380536 other Spinulosin quinol hydrate C8H12O6 204.0633881178 @@ -50,45 +50,45 @@ other Flaviolin C10H6O5 206.0215233031 other Anthraquinone C14H8O2 208.0524295010 other cyclo-(Gly-Ala) C10H14N2O3 210.1004423261 other L-prolylhydroxy-L-prolinediketopiperazine C10H14N2O3 210.1004423261 -other itoic acid C9H9N1O5 211.0480724046 -other 2.3-dihydroxybenzoylglycine C9H9N1O5 211.0480724046 -other Quinolobactin C11H9N1O4 219.0531577825 +other itoic acid C9H9N1O5 211.0480724046 SB: 113 +other 2.3-dihydroxybenzoylglycine C9H9N1O5 211.0480724046 SB: 81 +other Quinolobactin C11H9N1O4 219.0531577825 SB: 278 other Fumigatin chlorohydrin C8H9ClO5 220.0138513994 -other Aeruginic acid C10H7N1O3S1 221.0146637862 +other Aeruginic acid C10H7N1O3S1 221.0146637862 SB: 285 other Parvulenone C12H14O4 222.0892089378 -other Aminochelin C11H16N2O3 224.1160923903 -other Aspergilic acid C12H20N2O2 224.1524778966 -other Neoaspergillic acid C12H20N2O2 224.1524778966 +other Aminochelin C11H16N2O3 224.1160923903 SB: 88 +other Aspergilic acid C12H20N2O2 224.1524778966 SB: 232 +other Neoaspergillic acid C12H20N2O2 224.1524778966 SB: 233 other Csypyrone B1 C10H10O6 226.0477380536 other Cyclo(L-leucyl-trans-4-hydroxy-L-proline) C11H18N2O3 226.1317424545 other Carbonarone A C13H11NO3 229.0738932246 other Tensidol A C13H11NO3 229.0738932246 -other Siderochelin A C12H14N2O3 234.1004423261 -other Thio-quinolobactin C11H9N1O3S1 235.0303138504 +other Siderochelin A C12H14N2O3 234.1004423261 SB: 281 +other Thio-quinolobactin C11H9N1O3S1 235.0303138504 SB: 94 other Siderochelin B C11H13N3O3 235.0956912992 -other Desferrithiocin C10H10N2O3S1 238.0412128877 +other Desferrithiocin C10H10N2O3S1 238.0412128877 SB: 51 other Agroclavin C16H18N2 238.1469985882 other Csypyrone B2 C11H12O6 240.0633881178 other Festuclavin C16H20N2 240.1626486524 -other 2.3-dihydroxybenzoylserine C10H11N1O6 241.0586370909 +other 2.3-dihydroxybenzoylserine C10H11N1O6 241.0586370909 SB: 79 other cyclo-(R-Pro-R-Phe) C14H16N2O2 244.1211777682 other 5-demethoxyfumagillol C15H24O3 252.1725446367 other Csypyrone B3 C12H14O6 254.0790381820 other Fumiquinone A C12H14O6 254.0790381820 other Elymoclavin C16H18N2O 254.1419132103 -other 2.3-dihydroxybenzoylthreonine C11H13N1O6 255.0742871551 +other 2.3-dihydroxybenzoylthreonine C11H13N1O6 255.0742871551 SB: 80 other Chanoclavine I C16H20N2O 256.1575632745 other Fumigaclavine B C16H20N2O 256.1575632745 other [1.1'-Biphenyl]-4-carboxylic acid. 3.3'-dihydroxy-5.5'-dimethyl C15H14O4 258.0892089378 other cyclo-(cisOH-D-Pro-L-Phe) C14H16N2O3 260.1160923903 other Cyclo(L-trans-(4-hydroxyprolinyl)-L-phenylalanine) C14H16N2O3 260.1160923903 -other Cis-fusarinine C11H20N2O5 260.1372217629 -other Trans-fusarinine C11H20N2O5 260.1372217629 +other Cis-fusarinine C11H20N2O5 260.1372217629 SB: 6 +other Trans-fusarinine C11H20N2O5 260.1372217629 SB: 5 other cyclo-(R-Phe-S-Ile) C15H20N2O2 260.1524778966 other Violacerol I C14H14O5 262.0841235599 other Violacerol II C14H14O5 262.0841235599 other cyclo-(R-Valr-S-Tyr) C14H18N2O3 262.1317424545 -other pyridoxatin C15H21N1O3 263.1521435456 +other pyridoxatin C15H21N1O3 263.1521435456 SB: 279 other Fumigatin bromohydrin C8H9BrO5 263.9633253994 other Microperfuranone C17H14O3 266.0942943157 other emodin C15H10O5 270.0528234315 @@ -107,25 +107,25 @@ other 2-Deoxymugeneic acid C12H20N2O7 304.1270510071 other 9(10H)-Anthracenone. 2-chloro-1.3.8-trihydroxy-6-(hydroxymethyl)- C15H11ClO5 306.0295014636 other Endocrocin C16H10O7 314.0426526757 other Asperthecin C15H10O8 318.0375672978 -other Mugeneic acid C12H20N2O8 320.1219656292 -other Avenic acid C12H22N2O8 322.1376156934 -other Enantio-pyochelin C14H16N2O3S2 324.0602337703 -other Pyochelin C14H16N2O3S2 324.0602337703 +other Mugeneic acid C12H20N2O8 320.1219656292 SB: 268 +other Avenic acid C12H22N2O8 322.1376156934 SB: 82 +other Enantio-pyochelin C14H16N2O3S2 324.0602337703 SB: 230 +other Pyochelin C14H16N2O3S2 324.0602337703 SB: 38 other Sterigmatocystine C18H12O6 324.0633881178 other terezine D C19H23N3O2 325.1790269981 other gliotoxin C13H14N2O4S2 326.0394983282 other Bis-N-norgliovictin C14H18N2O3S2 326.0758838345 other Bisdechlorogeodin C17H14O7 330.0739528041 -other Pseudomonine C16H18N4O4 330.1328050870 +other Pseudomonine C16H18N4O4 330.1328050870 SB: 92 other Asperfuranone C19H24O5 332.1623738809 other 3-hydroxymugeneic acid C12H20N2O9 336.1168802513 -other Thiazostatin C15H18N2O3S2 338.0758838345 +other Thiazostatin C15H18N2O3S2 338.0758838345 SB: 283 other Bis(2-hydroxy-3-tert.butyl-5-methylphenyl)methane C23H32O2 340.2402302714 other Trypacidin C18H16O7 344.0896028683 -other Rhodotorulic acid C14H24N4O6 344.1695845238 +other Rhodotorulic acid C14H24N4O6 344.1695845238 SB: 69 other m-Anisic acid C18H18O7 346.1052529325 -other Acinetobactin C16H18N4O5 346.1277197091 -other Anguibactin C15H16N4O4S1 348.0892257128 +other Acinetobactin C16H18N4O5 346.1277197091 SB: 47 +other Anguibactin C15H16N4O4S1 348.0892257128 SB: 74 other Demethoxyfumitremorgin C C21H23N3O2 349.1790269981 other Tryptostatin B C21H25N3O2 351.1946770623 other Didehydrobisdethiobis(methylthio)gliotoxin C15H18N2O4S2 354.0707984566 @@ -137,11 +137,11 @@ other fumiquinazolines G C21H18N4O2 358.1429758428 other Asperfumoid C18H17NO7 359.1005019056 other Spirotryprostatin B C21H21N3O3 363.1582915560 other Fumigaclavine C C23H30N2O2 366.2307282176 -other Chrysobactin C16H23N3O7 369.1536001086 +other Chrysobactin C16H23N3O7 369.1536001086 SB: 90 other Azaspirene C21H23NO5 369.1576228540 -other Putrebactin C16H28N4O6 372.2008846522 +other Putrebactin C16H28N4O6 372.2008846522 SB: 63 other Asperfumin C19H20O8 376.1158176188 -other Rhizobactin C15H27N3O8 377.1798148591 +other Rhizobactin C15H27N3O8 377.1798148591 SB: 102 other Cyclotryprostatine D C21H21N3O4 379.1532061781 other fumitremorgin C C22H25N3O3 379.1895916844 other Cyclotryprostatine C C21H23N3O4 381.1688562423 @@ -156,43 +156,42 @@ other Spirotryprostatin A C22H25N3O4 395.1845063065 other F 9775A C21H16O8 396.0845174904 other F 9775B C21H16O8 396.0845174904 other Ergosterol C28H44O 396.3392160345 -other Vanchrobactin C16H23N5O7 397.1597481190 +other Vanchrobactin C16H23N5O7 397.1597481190 SB: 118 other 24S-Methylcholesta-5.22-dien-3-ol; 4.22-Ergostadien-3-ol C28H46O 398.3548660987 other Aspernidine A C24H33NO4 399.2409585529 -other Bisucaberin C18H32N4O6 400.2321847806 +other Bisucaberin C18H32N4O6 400.2321847806 SB: 64 other Sphingofungin F C21H39NO6 401.2777379897 other tryptoquivaline F C22H18N4O4 402.1328050870 other fumitremorgin J (tryptoquivaline J) C22H18N4O4 402.1328050870 other tryptoquivaline O C22H18N4O4 402.1328050870 -other Schizokinen A C16H26N4O8 402.1750638322 +other Schizokinen A C16H26N4O8 402.1750638322 SB: 105 other Aspernidine E C24H34O5 402.2406242019 -other Salmochelin SX (Pacifarinic acid) C16H21N1O11 403.1114605224 +other Salmochelin SX (Pacifarinic acid) C16H21N1O11 403.1114605224 SB: 241 other Myxochelin B C20H25N3O6 403.1743355507 -other Myxochelin A C20H24N2O7 404.1583511355 -other Alcaligin C16H28N4O8 404.1907138964 -other N-deoxyschizokinen C16H28N4O8 404.1907138964 +other Myxochelin A C20H24N2O7 404.1583511355 SB: 293 +other Alcaligin C16H28N4O8 404.1907138964 SB: 53 +other N-deoxyschizokinen C16H28N4O8 404.1907138964 SB: 286 other Shamixanthone C25H26O5 406.1780239451 other Emericellin C25H28O5 408.1936740093 other Orlandin C22H18O8 410.1001675546 -other Benarthin C17H25N5O7 411.1753981832 +other Benarthin C17H25N5O7 411.1753981832 SB: 263 other Verruculogen TR 3 C22H25N3O5 411.1794209286 other Cyclotryprostatine A C22H25N3O5 411.1794209286 other Synerazol C22H23NO7 413.1474520982 other Aspernidine C C25H35NO4 413.2566086171 -other Serratiochelin C20H21N3O7 415.1379500444 +other Serratiochelin C20H21N3O7 415.1379500444 SB: 288 other Fusarin Y C22H25NO7 415.1631021624 other -12-hydroxyverruculogen TR-2 C21H25N3O6 415.1743355507 other Fusarin A C23H29NO6 415.1994876687 other Pseurotin F2 C21H23NO8 417.1423667203 other Pseurotin F2 C21H23NO8 417.1423667203 -other Pistillarin C21H27N3O6 417.1899856149 +other Pistillarin C21H27N3O6 417.1899856149 SB: 85 other Sphingofungin E C21H39NO7 417.2726526118 other Tryptoquivaline H C22H18N4O5 418.1277197091 other Tryptoquivaline E C22H18N4O5 418.1277197091 -other Azotochelin C20H22N2O8 418.1376156934 +other Azotochelin C20H22N2O8 418.1376156934 SB: 87 other Bisucaberin B C18H34N4O7 418.2427494669 -other Schizokinen C16H28N4O9 420.1856285185 -other Schizokinen C16H28N4O9 420.1856285185 +other Schizokinen C16H28N4O9 420.1856285185 SB: 104 other Norrhizoferrin C15H22N2O12 422.1172741818 other Demethylkotanin C23H20O8 424.1158176188 other Cyclotryprostatine B C23H27N3O5 425.1950709928 @@ -200,7 +199,7 @@ other Protostadienol C30H50O 426.3861662271 other cyclo-(Pro-trans-4-OH-Pro) C22H25N3O6 427.1743355507 other Ergosterol peroxide C28H44O3 428.3290452787 other 2-Azaspiro[4.4]non-7-ene-1.6-dione. 3-benzoyl-8-(1.2-dihydroxy-5-oxo-3-hexenyl)-3.4-dihydroxy-7-methyl-. [3S-[3.4.5(1S*.2R*.3E)]]- (9CI) C22H23NO8 429.1423667203 -other Serratiochelins A C21H23N3O7 429.1536001086 +other Serratiochelins A C21H23N3O7 429.1536001086 SB: 300 other verruculogen TR-2 C22H27N3O6 429.1899856149 other pseurotin A C22H25NO8 431.1580167845 other pseurotin A1 C22H25NO8 431.1580167845 @@ -212,10 +211,10 @@ other Sphingofungin D C22H41NO7 431.2883026760 other Sphingofungin A C21H41N3O6 431.2995360643 other Tryptoquivaline L C23H20N4O5 432.1433697733 other Tryptoquivaline G C23H20N4O5 432.1433697733 -other Vibrioferrin C16H22N2O12 434.1172741818 -other rhizoferrin C16H24N2O12 436.1329242460 -other (S.S) enantio Rhizoferrin C16H24N2O12 436.1329242460 -other Heterobactin B C19H27N5O7 437.1910482474 +other Vibrioferrin C16H22N2O12 434.1172741818 SB: 201 +other rhizoferrin C16H24N2O12 436.1329242460 SB: 65 +other (S.S) enantio Rhizoferrin C16H24N2O12 436.1329242460 SB: 86 +other Heterobactin B C19H27N5O7 437.1910482474 SB: 205 other Kotanin C24H22O8 438.1314676830 other fumiquinazolines D C24H21N5O4 443.1593541885 other Fumiquinazoline C C24H21N5O4 443.1593541885 @@ -227,11 +226,11 @@ other fumiquinazolines A C24H23N5O4 445.1750042527 other Fumiquinazoline B C24H23N5O4 445.1750042527 other Pseurotin B C22H25NO9 447.1529314066 other Pseurotin C C22H25NO9 447.1529314066 -other Serratiochelins B C21H25N3O8 447.1641647949 -other Serratiochelins C C21H25N3O8 447.1641647949 +other Serratiochelins B C21H25N3O8 447.1641647949 SB: 299 +other Serratiochelins C C21H25N3O8 447.1641647949 SB: 298 other Fusarin X C23H29NO8 447.1893169129 other Fusarin X C23H29NO8 447.1893169129 -other Staphyloferrin B C16H24N4O11 448.1441576343 +other Staphyloferrin B C16H24N4O11 448.1441576343 SB: 43 other 2-Oxorhizoferrin C16H22N2O13 450.1121888039 other Homorhizoferrin C17H26N2O12 450.1485743102 other Pyripyropene E C27H33NO5 451.2358731750 @@ -239,7 +238,7 @@ other Oxahomorhizoferrin C16H24N2O13 452.1278388681 other Dehydroaustinol C25H28O8 456.1784178756 other Austinol C25H30O8 458.1940679398 other Fumagillin C26H34O7 458.2304534461 -other Desferrioxamine H C20H36N4O8 460.2533141532 +other Desferrioxamine H C20H36N4O8 460.2533141532 SB: 116 other 3-hydroxyfumiquinazoline A C24H23N5O5 461.1699188748 other 2-Methylhomorhizoferrin C18H28N2O12 464.1642243744 other Pyripyropene F C28H35NO5 465.2515232392 @@ -247,180 +246,179 @@ other Pyripyropene G C27H33NO6 467.2307877971 other Tryptoquivaline N C26H24N4O5 472.1746699017 other Fumiquinazoline E C25H25N5O5 475.1855689390 other Fumagiringillin C26H36O8 476.2410181324 -other Arthrobactin C20H36N4O9 476.2482287753 +other Arthrobactin C20H36N4O9 476.2482287753 SB: 76 other Fumitremorgin B C27H33N3O5 479.2420211854 -other Staphyloferrin A C17H24N2O14 480.1227534902 -other Yersiniabactin C21H27N3O4S3 481.1163684407 +other Staphyloferrin A C17H24N2O14 480.1227534902 SB: 8 +other Yersiniabactin C21H27N3O4S3 481.1163684407 SB: 60 other Pyripyropene H C28H35NO6 481.2464378613 -other Dimerumic acid C22H36N4O8 484.2533141532 +other Dimerumic acid C22H36N4O8 484.2533141532 SB: 3 other Pseudomonic acid C C26H44O8 484.3036183892 other Cepaciachelin C24H32N4O7 488.2270994027 other Terrequinone A C32H30N2O3 490.2256428397 -other Corynebactin C18H26N2O14 494.1384035544 +other Corynebactin C18H26N2O14 494.1384035544 SB: 296 other Pseudomonic acid A C26H44O9 500.2985330113 other Tryptoquivaline I C27H26N4O6 502.1852345880 -other Fusarinine A C22H38N4O9 502.2638788395 -other Snychobactin A C22H40N4O9 504.2795289037 +other Fusarinine A C22H38N4O9 502.2638788395 SB: 306 +other Synechobactin C C22H40N4O9 504.2795289037 SB: 272 other Pyripyropene O C29H35NO7 509.2413524834 other verruculogen C27H33N3O7 511.2318504296 other Pseudomonic acid B C26H44O10 516.2934476334 other Pyripyropene P C30H37NO7 523.2570025476 other Pyripyropene R C30H37NO7 523.2570025476 other Helvolinic acid C31H42O7 526.2930537029 -other Rhizobactin 1021 C24H42N4O9 530.2951789679 +other Rhizobactin 1021 C24H42N4O9 530.2951789679 SB: 103 other Tryptoquivaline D C28H28N4O7 532.1957992743 other tryptoquivaline D C28H28N4O7 532.1957992743 other Tryptoquivaline M C28H28N4O7 532.1957992743 other Norisotryptoquivaline C28H28N4O7 532.1957992743 -other Snychobactin B C24H44N4O9 532.3108290321 -other Desferrioxamine A2 C23H44N6O8 532.3220624204 -other Neurosporin C40H58 538.4538518618 +other Synechobactin B C24H44N4O9 532.3108290321 SB: 271 +other Desferrioxamine A2 C23H44N6O8 532.3220624204 SB: 107 other Pyripyropene Q C30H37NO8 539.2519171697 other tryptoquivaline C C29H30N4O7 546.2114493385 other Isotryptoquivaline C29H30N4O7 546.2114493385 -other Desferrioxamine A1 C24H46N6O8 546.3377124846 +other Desferrioxamine A1 C24H46N6O8 546.3377124846 SB: 106 other Micacocidin P2 C26H35N3O4S3 549.1789686975 other Micacocidin P1 C26H37N3O4S3 551.1946187617 other Pyripyropene N C31H39NO8 553.2675672339 -other Desferrioxamine X2 C24H42N6O9 558.3013269783 -other Snychobactin C C26H48N4O9 560.3421291605 -other Desferrioxamine B C25H48N6O8 560.3533625488 +other Desferrioxamine X2 C24H42N6O9 558.3013269783 SB: 128 +other Synechobactin A C26H48N4O9 560.3421291605 SB: 270 +other Desferrioxamine B C25H48N6O8 560.3533625488 SB: 45 other Micacocidin P3 C27H37N3O4S3 563.1946187617 -other Aerobactin C22H36N4O13 564.2278872637 -other Micacocidin C27H39N3O4S3 565.2102688259 -other Coelichelin C21H39N7O11 565.2707551314 +other Aerobactin C22H36N4O13 564.2278872637 SB: 70 +other Micacocidin C27H39N3O4S3 565.2102688259 SB: 287 +other Coelichelin C21H39N7O11 565.2707551314 SB: 156 other helvolic acid C33H44O8 568.3036183892 other Acetoxyverruculogen C29H35N3O9 569.2373297380 other 29-Nordammara-1.17(20).24-trien-21-oic acid. 6.16-bis(acetyloxy)-3-hydroxy-7-oxo-. (4.6.8.9.13.14.16.17Z)- (9CI) C33H46O8 570.3192684534 -other Desferrioxamine X1 C25H44N6O9 572.3169770425 -other Nocardia heterobactin (JBIR-16) C26H31N5O10 573.2070922421 +other Desferrioxamine X1 C25H44N6O9 572.3169770425 SB: 126 +other Nocardia heterobactin (JBIR-16) C26H31N5O10 573.2070922421 SB: 206 other Tryptoquivaline M acetate C30H30N4O8 574.2063639606 other Demethyltryptoquivaline A C30H30N4O8 574.2063639606 other Desferrioxamine N C26H50N6O8 574.3690126130 -other Foroxymithine C22H37N7O11 575.2551050672 +other Foroxymithine C22H37N7O11 575.2551050672 SB: 231 other Micacocidin P5 C28H39N3O4S3 577.2102688259 other Micacocidin P4 C28H41N3O4S3 579.2259188901 other Fumitremorgin A C32H41N3O7 579.2944506864 other Pyripyropene M C32H39NO9 581.2624818560 other Pyripyropene A C31H37NO10 583.2417464139 -other Acinetoferrin C28H48N4O9 584.3421291605 +other Acinetoferrin C28H48N4O9 584.3421291605 SB: 46 other Micacocidin P6 C26H36ClN3O4S3 585.1556467296 -other Desferrioxamine D2 C26H46N6O9 586.3326271067 -other Achromobactin C22H29N3O16 591.1547819001 -other Maduraferrin C26H37N7O9 591.2652758230 -other Madurastatin C1 C26H37N7O9 591.2652758230 -other Nigribactin C30H32N4O9 592.2169286469 +other Desferrioxamine D2 C26H46N6O9 586.3326271067 SB: 110 +other Achromobactin C22H29N3O16 591.1547819001 SB: 91 +other Maduraferrin C26H37N7O9 591.2652758230 SB: 305 +other Madurastatin C1 C26H37N7O9 591.2652758230 SB: 269 +other Nigribactin C30H32N4O9 592.2169286469 SB: 312 other Pyripyropene B C32H39NO10 597.2573964781 other Pyripyropene C C32H39NO10 597.2573964781 other Pyripyropene D C32H39NO10 597.2573964781 -other Desferrioxamine E C27H48N6O9 600.3482771709 +other Heterobactin A C27H30N6O10 598.2023412152 SB: 204 +other Desferrioxamine E C27H48N6O9 600.3482771709 SB: 49 other Desferrioxamine Et1 C26H46N6O10 602.3275417288 -other Desferrioxamine D1 C27H50N6O9 602.3639272351 -other Erythrochelin C24H41N7O11 603.2864051956 +other Desferrioxamine D1 C27H50N6O9 602.3639272351 SB: 109 +other Erythrochelin C24H41N7O11 603.2864051956 SB: 190 other Nidulanin C34H45N5O5 603.3420695810 -other Mirubactin C26H32N6O11 604.2129059015 +other Mirubactin C26H32N6O11 604.2129059015 SB: 297 other Desferrioxamine Et2 C25H44N6O11 604.3068062867 -other Desferrioxamine G2A C26H48N6O10 604.3431917930 -other Desferrioxamine G2B C26H48N6O10 604.3431917930 -other Desferrioxamine G2C C26H48N6O10 604.3431917930 +other Desferrioxamine G2A C26H48N6O10 604.3431917930 SB: 112 +other Desferrioxamine G2B C26H48N6O10 604.3431917930 SB: 114 +other Desferrioxamine G2C C26H48N6O10 604.3431917930 SB: 115 other Desferrioxamine Et3 C24H42N6O12 606.2860708446 -other Exochelin MS C23H44N8O11 608.3129542971 +other Exochelin MS C23H44N8O11 608.3129542971 SB: 173 other Emericellamide A C31H55N5O7 609.4101491462 other Pyripyropene J C33H41NO10 611.2730465423 other Pyripyropene K C33H41NO10 611.2730465423 other Pyripyropene L C33H41NO10 611.2730465423 -other Desferrioxamine X3 C28H50N6O9 614.3639272351 -other Heterobactin A C27H33N7O10 615.2288903167 +other Desferrioxamine X3 C28H50N6O9 614.3639272351 SB: 129 other Desferrioxamine P1 C26H45N7O10 615.3227907019 other Desferrioxamine Te1 C26H46N6O9S1 618.3046977967 -other Desferrioxamine G1 C27H50N6O10 618.3588418572 -other Parabactin C32H36N4O9 620.2482287753 -other Fluvibactin C31H34N4O10 622.2274933332 -other Protochelin C31H36N4O10 624.2431433974 +other Desferrioxamine G1 C27H50N6O10 618.3588418572 SB: 50 +other Parabactin C32H36N4O9 620.2482287753 SB: 179 +other Fluvibactin C31H34N4O10 622.2274933332 SB: 177 +other Protochelin C31H36N4O10 624.2431433974 SB: 89 other Pyripyropene I C34H43NO10 625.2886966065 -other Salmochelin S1 C26H30N2O16 626.1595329270 -other Neocoprogen II C27H44N6O11 628.3068062867 -other Desferrioxamine X4 C29H52N6O9 628.3795772993 +other Salmochelin S1 C26H30N2O16 626.1595329270 SB: 242 +other Neocoprogen II C27H44N6O11 628.3068062867 SB: 153 +other Desferrioxamine X4 C29H52N6O9 628.3795772993 SB: 130 other Ergosteryl palmitate C44H74O2 634.5688816196 -other Agrobactin C32H36N4O10 636.2431433974 +other Agrobactin C32H36N4O10 636.2431433974 SB: 176 other Desferrioxamine Te2 C25H44N6O9S2 636.2611184225 -other Acyl-desferrioxamine 1 C31H52N6O8 636.3846626772 -other Parabactin A C32H38N4O10 638.2587934616 +other Acyl-desferrioxamine 1 C31H52N6O8 636.3846626772 SB: 213 +other Parabactin A C32H38N4O10 638.2587934616 SB: 180 other Desferrioxamine Te3 C24H42N6O9S3 654.2175390483 -other Agrobactin A C32H38N4O11 654.2537080837 -other Acyl-desferrioxamine 3 C32H62N6O8 658.4629129982 -other Enterobactin C30H27N3O15 669.1442172138 -other Porocentrin C39H60O9 672.4237335249 -other Vulnibactin C35H39N5O9 673.2747778768 -other Acyl-desferrioxamine 2 C33H54N6O9 678.3952273635 +other Agrobactin A C32H38N4O11 654.2537080837 SB: 178 +other Acyl-desferrioxamine 3 C32H62N6O8 658.4629129982 SB: 221 +other Enterobactin C30H27N3O15 669.1442172138 SB: 48 +other Porocentrin C39H60O9 672.4237335249 SB: 196 +other Vulnibactin C35H39N5O9 673.2747778768 SB: 181 +other Acyl-desferrioxamine 2 C33H54N6O9 678.3952273635 SB: 219 other Ornibactin C4 C26H48N8O13 680.3340836697 -other Exochelin MN C28H49N11O9 683.3714722290 -other Dimethylneocoprogen I C31H52N6O11 684.3694065435 -other Dimethyltriornicin C31H52N6O11 684.3694065435 +other Exochelin MN C28H49N11O9 683.3714722290 SB: 71 +other Dimethylneocoprogen I C31H52N6O11 684.3694065435 SB: 155 +other Dimethyltriornicin C31H52N6O11 684.3694065435 SB: 158 other Dimethylisoneocoprogen I C31H52N6O11 684.3694065435 -other Acyl-desferrioxamine 4 C34H66N6O8 686.4942131266 -other Ferrichrome C27H45N9O12 687.3187679565 +other Acyl-desferrioxamine 4 C34H66N6O8 686.4942131266 SB: 223 +other Ferrichrome C27H45N9O12 687.3187679565 SB: 41 other Carboxymycobactin C2 C32H43N5O12 689.2908218715 other Carboxymycobactin 3 C1 C32H45N5O12 691.3064719357 -other Amonabactin P693 C35H43N5O10 693.3009926273 +other Amonabactin P693 C35H43N5O10 693.3009926273 SB: 292 other Heterobactin S1 C27H33N7O13S 695.1857048730 other Heterobactin S2 C27H33N7O13S 695.1857048730 -other isoneocoprogen I C31H50N6O12 698.3486711014 -other isotriornicin C31H50N6O12 698.3486711014 -other Neocoprogen I C31H50N6O12 698.3486711014 -other Triornicin C31H50N6O12 698.3486711014 -other Acyl-desferrioxamine 5 C34H64N6O9 700.4734776845 -other Ferrichrome C C28H47N9O12 701.3344180207 +other isoneocoprogen I C31H50N6O12 698.3486711014 SB: 149 +other isotriornicin C31H50N6O12 698.3486711014 SB: 151 +other Neocoprogen I C31H50N6O12 698.3486711014 SB: 151 +other Triornicin C31H50N6O12 698.3486711014 SB: 149 +other Acyl-desferrioxamine 5 C34H64N6O9 700.4734776845 SB: 225 +other Ferrichrome C C28H47N9O12 701.3344180207 SB: 131 other Carboxymycobactin C3 C33H45N5O12 703.3064719357 -other Vibriobactin C35H39N5O11 705.2646071210 +other Vibriobactin C35H39N5O11 705.2646071210 SB: 52 other Carboxymycobactin 3 C2 C33H47N5O12 705.3221219999 -other Tsukubachelin C27H49N9O13 707.3449827070 +other Tsukubachelin C27H49N9O13 707.3449827070 SB: 227 other Ornibactin C6 C28H52N8O13 708.3653837981 -other Hydroxyisoneocoprogen I C31H50N6O13 714.3435857235 -other Hydroxyneocoprogen I C31H50N6O13 714.3435857235 -other Sake colorant A C29H49N9O12 715.3500680849 +other Hydroxyisoneocoprogen I C31H50N6O13 714.3435857235 SB: 161 +other Hydroxyneocoprogen I C31H50N6O13 714.3435857235 SB: 160 +other Sake colorant A C29H49N9O12 715.3500680849 SB: 132 other Mycobactin S C9 C36H53N5O10 715.3792429483 -other Desferrioxamine T8 C30H52N8O12 716.3704691760 +other Desferrioxamine T8 C30H52N8O12 716.3704691760 SB: 125 other Carboxymycobactin C4 C34H47N5O12 717.3221219999 -other Ferricrocin C28H47N9O13 717.3293326428 -other Petrobactin C34H50N6O11 718.3537564793 +other Ferricrocin C28H47N9O13 717.3293326428 SB: 40 +other Petrobactin C34H50N6O11 718.3537564793 SB: 67 other Carboxymycobactin 3 C3 C34H49N5O12 719.3377720641 other Carboxymycobactin 4 C2 C34H49N5O12 719.3377720641 -other Dichrysobactin C32H44N6O13 720.2966355309 +other Dichrysobactin C32H44N6O13 720.2966355309 SB: 218 other Progenin II C39H62O12 722.4241274554 -other Coprogen B C33H54N6O12 726.3799712298 -other Fusarinine C (cyclic fusigen) C33H54N6O12 726.3799712298 -other Des(diserylglycyl)ferrirhodin C33H56N6O12 728.3956212940 +other Coprogen B C33H54N6O12 726.3799712298 SB: 147 +other Fusarinine C (cyclic fusigen) C33H54N6O12 726.3799712298 SB: 20 +other Des(diserylglycyl)ferrirhodin C33H56N6O12 728.3956212940 SB: 99 other Mycobactin F C9 C37H55N5O10 729.3948930125 other Mycobactin S C10 C37H55N5O10 729.3948930125 other Carboxymycobactin C5 C35H49N5O12 731.3377720641 other Carboxymycobactin 1 C2 C35H49N5O12 731.3377720641 -other Amonabactin T732 C37H44N6O10 732.3118916646 +other Amonabactin T732 C37H44N6O10 732.3118916646 SB: 291 other Carboxymycobactin 3 C4 C35H51N5O12 733.3534221283 other Carboxymycobactin 4 C3 C35H51N5O12 733.3534221283 other Tsukubachelin B C29H54N10O12 734.3922672506 -other Amycolachrom C28H49N9O14 735.3398973291 +other Amycolachrom C28H49N9O14 735.3398973291 SB: 294 other Ornibactin C8 C30H56N8O13 736.3966839265 -other Amychelin C30H42N8O14 738.2820480992 -other Nannochelin C C36H44N4O13 740.2904875205 -other 2-N-methylcoprogen B C34H56N6O12 740.3956212940 +other Amychelin C30H42N8O14 738.2820480992 SB: 303 +other Nannochelin C C36H44N4O13 740.2904875205 SB: 236 +other 2-N-methylcoprogen B C34H56N6O12 740.3956212940 SB: 7 other Formobactin C38H57N5O10 743.4105430767 other Mycobactin F C10 C38H57N5O10 743.4105430767 other Mycobactin S C11 C38H57N5O10 743.4105430767 other Mycobactin NA (Nocobactin) C9 C38H57N5O10 743.4105430767 -other Tetraglycine ferrichrome C29H48N10O13 744.3402316801 +other Tetraglycine ferrichrome C29H48N10O13 744.3402316801 SB: 141 other Tetraglycyl-ferrichrome C29H48N10O13 744.3402316801 -other Fusarinine B C33H56N6O13 744.3905359161 -other Linear fusigen C33H56N6O13 744.3905359161 +other Fusarinine B C33H56N6O13 744.3905359161 SB: 142 +other Linear fusigen C33H56N6O13 744.3905359161 SB: 197 other Carboxymycobactin C6 C36H51N5O12 745.3534221283 other Carboxymycobactin 1 C3 C36H51N5O12 745.3534221283 other Carboxymycobactin 2 C2 C36H51N5O12 745.3534221283 -other Ferrichrysin C29H49N9O14 747.3398973291 +other Ferrichrysin C29H49N9O14 747.3398973291 SB: 42 other Carboxymycobactin 3 C5 C36H53N5O12 747.3690721925 other Carboxymycobactin 4 C4 C36H53N5O12 747.3690721925 -other Amonabactin P750 C37H46N6O11 750.3224563509 -other Nannochelin B C37H46N4O13 754.3061375847 -other Dimethylcoprogen C35H58N6O12 754.4112713582 +other Amonabactin P750 C37H46N6O11 750.3224563509 SB: 84 +other Nannochelin B C37H46N4O13 754.3061375847 SB: 235 +other Dimethylcoprogen C35H58N6O12 754.4112713582 SB: 154 other Ochrobactin A C36H60N4O13 756.4156880341 other Mycobactin F C11 C39H59N5O10 757.4261931409 other Mycobactin S C12 C39H59N5O10 757.4261931409 @@ -429,52 +427,53 @@ other Ochrobactin B C36H62N4O13 758.4313380983 other Carboxymycobactin C7 C37H53N5O12 759.3690721925 other Carboxymycobactin 1C4 C37H53N5O12 759.3690721925 other Carboxymycobactin 2 C3 C37H53N5O12 759.3690721925 -other Anacheline-1 C35H49N6O13 761.3357606914 -other Anacheline-2 C35H49N6O13 761.3357606914 +other Anacheline-1 C35H48N6O13 760.3279356593 SB: 274 +other Anacheline-2 C35H48N6O13 760.3279356593 SB: 275 other Carboxymycobactin 3 C6 C37H55N5O12 761.3847222567 other Carboxymycobactin 4 C5 C37H55N5O12 761.3847222567 -other Nannochelin A C38H48N4O13 768.3217876489 -other Coprogen C35H56N6O13 768.3905359161 +other Nannochelin A C38H48N4O13 768.3217876489 SB: 234 +other Coprogen C35H56N6O13 768.3905359161 SB: 13 other Carboxymycobactin 2 C4 C38H53N5O12 771.3690721925 other Mycobactin F C12 C40H61N5O10 771.4418432051 other Mycobactin S C13 C40H61N5O10 771.4418432051 other Mycobactin NA (Nocobactin) C11 C40H61N5O10 771.4418432051 -other Desferrioxamine T3 C34H60N8O12 772.4330694328 -other Desferrioxamine T7 C34H60N8O12 772.4330694328 +other Desferrioxamine T3 C34H60N8O12 772.4330694328 SB: 123 +other Desferrioxamine T7 C34H60N8O12 772.4330694328 SB: 124 other Carboxymycobactin C8 C38H55N5O12 773.3847222567 other Carboxymycobactin 1 C5 C38H55N5O12 773.3847222567 -other Vicibactin C33H54N6O15 774.3647150961 +other Vicibactin C33H54N6O15 774.3647150961 SB: 101 other Carboxymycobactin 3 C7 C38H57N5O12 775.4003723209 -other Divanchrobactin C32H44N10O13 776.3089315517 -other Anacheline-H C35H51N6O14 779.3463253777 -other 2-N-methylcoprogen C36H58N6O13 782.4061859803 -other Hydroxycoprogen C35H56N6O14 784.3854505382 +other Divanchrobactin C32H44N10O13 776.3089315517 SB: 119 +other Anacheline-H C35H50N6O14 778.3385003456 SB: 273 +other 2-N-methylcoprogen C36H58N6O13 782.4061859803 SB: 188 +other Hydroxycoprogen C35H56N6O14 784.3854505382 SB: 159 other Ochrobactin C C38H64N4O13 784.4469881625 other Mycobactin A C41H63N5O10 785.4574932693 other Mycobactin F C13 C41H63N5O10 785.4574932693 other Mycobactin S C14 C41H63N5O10 785.4574932693 other Mycobactin Av C11 C41H63N5O10 785.4574932693 -other Basidiochrome C33H50N6O16 786.3283295898 -other Desferrioxamine T2 C35H62N8O12 786.4487194970 +other Basidiochrome C33H50N6O16 786.3283295898 SB: 97 +other Desferrioxamine T2 C35H62N8O12 786.4487194970 SB: 122 other Carboxymycobactin C9 C39H57N5O12 787.4003723209 other Carboxymycobactin 1 C6 C39H57N5O12 787.4003723209 -other Amonabactin T789 C39H47N7O11 789.3333553882 +other Amonabactin T789 C39H47N7O11 789.3333553882 SB: 83 other Carboxymycobactin 3 C8 C39H59N5O12 789.4160223851 -other Petrobactin sulphonate C34H50N6O14S1 798.3105710356 +other Petrobactin sulphonate C34H50N6O14S1 798.3105710356 SB: 68 other Mycobactin F C14 C42H65N5O10 799.4731433335 other Mycobactin S C15 C42H65N5O10 799.4731433335 other Mycobactin Av C12 C42H65N5O10 799.4731433335 -other Desferrioxamine T1 C36H64N8O12 800.4643695612 +other Desferrioxamine T1 C36H64N8O12 800.4643695612 SB: 121 other Carboxymycobactin 1 C7 C40H59N5O12 801.4160223851 other Carboxymycobactin 3 C9 C40H61N5O12 803.4316724493 other Amphibactin T C36H65N7O13 803.4640352102 -other Cupriachelin C33H57N7O16 807.3861788197 +other Dibenarthin C34H48N10O13 804.3402316801 SB: 264 +other Cupriachelin C33H57N7O16 807.3861788197 SB: 276 other Mycobactin F C15 C43H67N5O10 813.4887933977 other Mycobactin S C16 C43H67N5O10 813.4887933977 other Mycobactin Av C13 C43H67N5O10 813.4887933977 -other Asperchrome D1 C33H55N9O15 817.3817621438 -other Asperchrome D2 C33H55N9O15 817.3817621438 -other Asperchrome D3 C33H55N9O15 817.3817621438 +other Asperchrome D1 C33H55N9O15 817.3817621438 SB: 59 +other Asperchrome D2 C33H55N9O15 817.3817621438 SB: 61 +other Asperchrome D3 C33H55N9O15 817.3817621438 SB: 62 other Mycobactin F C16 C44H69N5O10 827.5044434619 other Mycobactin M C15 C44H69N5O10 827.5044434619 other Mycobactin S C17 C44H69N5O10 827.5044434619 @@ -482,10 +481,10 @@ other Mycobactin T C17 C44H69N5O10 827.5044434619 other Mycobactin Av C14 C44H69N5O10 827.5044434619 other Amphibactin S C38H67N7O13 829.4796852744 other Rhodobactin C36H50N10O13 830.3558817443 -other Amphibactin D C38H69N7O13 831.4953353386 -other Malonichrome C31H47N9O18 833.3039057533 -other Corynebactin C36H36N6O18 840.2086083846 -other Mycobactin P C15 C45H71N5O10 841.5200935261 +other Amphibactin D C38H69N7O13 831.4953353386 SB: 165 +other Malonichrome C31H47N9O18 833.3039057533 SB: 133 +other Corynebactin C36H36N6O18 840.2086083846 SB: 199 +other Mycobactin P C15 C45H71N5O10 841.5200935261 SB: 77 other Mycobactin F C17 C45H71N5O10 841.5200935261 other Mycobactin M C16 C45H71N5O10 841.5200935261 other Mycobactin N C15 C45H71N5O10 841.5200935261 @@ -493,8 +492,9 @@ other Mycobactin S C18 C45H71N5O10 841.5200935261 other Mycobactin T C18 C45H71N5O10 841.5200935261 other Mycobactin Av C15 C45H71N5O10 841.5200935261 other Mycobactin J C45H71N5O10 841.5200935261 -other Amphibactin B C38H69N7O14 847.4902499607 -other N'.N'.N'- triacetylfusarinin C C39H60N6O15 852.4116652887 +other Amphibactin B C38H69N7O14 847.4902499607 SB: 163 +other Neurosporin C39H60N6O15 852.4116652887 SB: 143 +other N'.N'.N'- triacetylfusarinin C C39H60N6O15 852.4116652887 SB: 39 other Mycobactin P C16 C46H73N5O10 855.5357435903 other Mycobactin H C17 C46H73N5O10 855.5357435903 other Mycobactin M C17 C46H73N5O10 855.5357435903 @@ -502,8 +502,8 @@ other Mycobactin N C16 C46H73N5O10 855.5357435903 other Mycobactin S C19 C46H73N5O10 855.5357435903 other Mycobactin T C19 C46H73N5O10 855.5357435903 other Mycobactin Av C16 C46H73N5O10 855.5357435903 -other Amphibactin E C40H71N7O13 857.5109854028 -other Amphibactin H C40H73N7O13 859.5266354670 +other Amphibactin E C40H71N7O13 857.5109854028 SB: 166 +other Amphibactin H C40H73N7O13 859.5266354670 SB: 169 other Dioscin C45H72O16 868.4820362648 other Mycobactin P C17 C47H75N5O10 869.5513936545 other Mycobactin H C18 C47H75N5O10 869.5513936545 @@ -511,40 +511,40 @@ other Mycobactin M C18 C47H75N5O10 869.5513936545 other Mycobactin N C17 C47H75N5O10 869.5513936545 other Mycobactin T C20 C47H75N5O10 869.5513936545 other Mycobactin Av C17 C47H75N5O10 869.5513936545 -other Amphibactin C C40H71N7O14 873.5059000249 -other Amphibactin F C40H73N7O14 875.5215500891 -other Petrobactin disulphonate C34H50N6O17S2 878.2673855919 -other Bacillibactin C39H42N6O18 882.2555585772 +other Amphibactin C C40H71N7O14 873.5059000249 SB: 164 +other Amphibactin F C40H73N7O14 875.5215500891 SB: 167 +other Petrobactin disulphonate C34H50N6O17S2 878.2673855919 SB: 308 +other Bacillibactin C39H42N6O18 882.2555585772 SB: 66 other Mycobactin P C18 C48H77N5O10 883.5670437187 other Mycobactin H C19 C48H77N5O10 883.5670437187 other Mycobactin N C18 C48H77N5O10 883.5670437187 other Mycobactin R C48H77N5O10 883.5670437187 other Mycobactin Av C18 C48H77N5O10 883.5670437187 -other Amphibactin I C42H75N7O13 885.5422855312 -other Asperchrome B1 C37H61N9O16 887.4236269585 -other Asperchrome B2 C37H61N9O16 887.4236269585 -other Asperchrome B3 C37H61N9O16 887.4236269585 +other Amphibactin I C42H75N7O13 885.5422855312 SB: 170 +other Asperchrome B1 C37H61N9O16 887.4236269585 SB: 55 +other Asperchrome B2 C37H61N9O16 887.4236269585 SB: 134 +other Asperchrome B3 C37H61N9O16 887.4236269585 SB: 135 other Mycobactin P C19 C49H79N5O10 897.5826937829 -other Amphibactin G C42H75N7O14 901.5372001533 -other paenibactin C42H48N6O18 924.3025087698 -other Ferrimycin C41H70N10O14 926.5072970084 -other Alterobactin A C36H53N11O18 927.3570039563 +other Amphibactin G C42H75N7O14 901.5372001533 SB: 168 +other paenibactin C42H48N6O18 924.3025087698 SB: 304 +other Ferrimycin C41H70N10O14 926.5072970084 SB: 277 +other Alterobactin A C36H53N11O18 927.3570039563 SB: 309 other Marinobactin A C40H69N9O16 931.4862272153 -other Asperchrome A C41H67N9O16 941.4705771511 -other Alterobactin B C36H55N11O19 945.3675686426 -other Albomycin C36H59N11O17S1 949.3811102168 -other Albomycin 1 C36H58N10O18S1 950.3651258016 -other Asperchrome E C41H67N9O17 957.4654917732 -other Ferrirhodin C41H67N9O17 957.4654917732 -other Ferrirubin C41H67N9O17 957.4654917732 +other Asperchrome A C41H67N9O16 941.4705771511 SB: 58 +other Alterobactin B C36H55N11O19 945.3675686426 SB: 310 +other Albomycin C36H59N11O17S1 949.3811102168 SB: 239 +other Albomycin 1 C36H58N10O18S1 950.3651258016 SB: 237 +other Asperchrome E C41H67N9O17 957.4654917732 SB: 137 +other Ferrirhodin C41H67N9O17 957.4654917732 SB: 98 +other Ferrirubin C41H67N9O17 957.4654917732 SB: 56 other Marinobactin B C42H71N9O16 957.5018772795 other Marinobactin C C42H73N9O16 959.5175273437 -other Taiwachelin C41H70N8O18 962.4808074864 -other palmitoylcoprogen C49H84N6O13 964.6096368149 +other Taiwachelin C41H70N8O18 962.4808074864 SB: 311 +other palmitoylcoprogen C49H84N6O13 964.6096368149 SB: 162 other Salmycin C C40H70N6O21 970.4594033423 -other Asperchrome F1 C41H69N9O18 975.4760564595 -other Asperchrome F2 C41H69N9O18 975.4760564595 -other Asperchrome F3 C41H69N9O18 975.4760564595 +other Asperchrome F1 C41H69N9O18 975.4760564595 SB: 138 +other Asperchrome F2 C41H69N9O18 975.4760564595 SB: 139 +other Asperchrome F3 C41H69N9O18 975.4760564595 SB: 140 other Salmycin B C41H72N6O21 984.4750534065 other Marinobactin D1 C44H75N9O16 985.5331774079 other Marinobactin D2 C44H75N9O16 985.5331774079 @@ -552,19 +552,18 @@ other Marinobactin E C44H77N9O16 987.5488274721 other Pyoverdin 6.1 (Pseudobactin) C42H60N12O16 988.4250239420 other Pyoverdin B10 C42H60N12O16 988.4250239420 other Pseudobactin A C42H62N12O16 990.4406740062 -other Albomycin 2 C37H60N12O18S1 992.3869238762 -other Salmochelin S4 C42H47N3O25 993.2498640768 -other Corrugatin C40H63N13O17 997.4464876656 -other Ferrichrome A C41H61N9O20 999.4032854469 -other Asperchrome C C43H69N9O18 999.4760564595 -other Salmycin A C41H73N7O21 999.4859524438 -other Salmochelin S2 C42H49N3O26 1011.2604287631 +other Albomycin 2 C37H60N12O18S1 992.3869238762 SB: 238 +other Salmochelin S4 C42H47N3O25 993.2498640768 SB: 117 +other Corrugatin C40H63N13O17 997.4464876656 SB: 95 +other Ferrichrome A C41H61N9O20 999.4032854469 SB: 78 +other Asperchrome C C43H69N9O18 999.4760564595 SB: 136 +other Salmycin A C41H73N7O21 999.4859524438 SB: 240 +other Salmochelin S2 C42H49N3O26 1011.2604287631 SB: 200 other Salmochelin S3 C42H49N3O26 1011.2604287631 -other Ornicorrugatin C41H65N13O17 1011.4621377298 +other Ornicorrugatin C41H65N13O17 1011.4621377298 SB: 96 other Pyoverdin Thai C43H60N12O17 1016.4199385641 other Epichloenin B C44H71N11O17 1025.5029399120 -other Fuscachelin A C42H59N15O16 1029.4264209255 -other Fuscachelin C C42H62N16O15 1030.4580554049 +other Fuscachelin A C42H59N15O16 1029.4264209255 SB: 189 other Pseudoprotodioscin C51H82O21 1030.5348596963 other Protodioscin C51H82O21 1030.5348596963 other Epichloeamide C46H74N12O15 1034.5396597693 @@ -573,21 +572,22 @@ other Pyoverdin 9AW (amide) C44H62N14O16 1042.4468220166 other Pyoverdin 9AW C44H61N13O17 1043.4308376014 other Pyoverdin R' C43H60N14O17 1044.4260865745 other Pyoverdin PL7 C44H62N12O18 1046.4305032504 -other Fuscachelin B C42H61N15O17 1047.4369856118 +other Fuscachelin C C42H62N16O16 1046.4529700270 SB: 229 +other Fuscachelin B C42H61N15O17 1047.4369856118 SB: 228 other Pyoverdin BTP2 (amide) C43H60N12O19 1048.4097678083 other Pyoverdin BTP2 C43H59N11O20 1049.3937833931 -other Cyclic trichrisobactin C48H63N9O18 1053.4291062669 +other Cyclic trichrisobactin C48H63N9O18 1053.4291062669 SB: 216 other Hexadehydro-Astechrome C60H63N9O9 1053.4748746680 other Loihichelin A C44H73N11O19 1059.5084192204 other Astechrome C60H69N9O9 1059.5218248606 other Pyoverdin 1W C45H68N14O16 1060.4937722092 -other Aquachelin A C44H74N10O20 1062.5080848694 +other Aquachelin A C44H74N10O20 1062.5080848694 SB: 198 other Aquachelin B C44H76N10O20 1064.5237349336 -other Linear trichrisobactin C48H65N9O19 1071.4396709532 +other Linear trichrisobactin C48H65N9O19 1071.4396709532 SB: 217 other Pyoverdin G4R C44H60N14O18 1072.4210011966 other Pyoverdin G4R A C44H59N13O19 1073.4050167814 other Isopyoverdin C44H60N12O20 1076.4046824304 -other Pseudoalterobactin A C41H63N11O21S1 1077.3920688336 +other Pseudoalterobactin A C41H63N11O21S1 1077.3920688336 SB: 301 other Aquachelin I C44H76N10O21 1080.5186495557 other Epichloenin A C46H74N12O18 1082.5244036356 other Loihichelin C C46H75N11O19 1085.5240692846 @@ -604,7 +604,7 @@ other Pyoverdin P cic. C44H59N11O22 1093.3836126373 other Azotabactin P19 C43H59N12O22 1095.3866866425 other Pyoverdin PL8 C47H69N13O18 1103.4883524803 other Loihichelin B C46H77N11O20 1103.5346339709 -other Pseudoalterobactin B C41H63N13O21S1 1105.3982168440 +other Pseudoalterobactin B C41H63N13O21S1 1105.3982168440 SB: 302 other Pyoverdin 11370 (amide) C45H63N13O20 1105.4312315319 other Pyoverdin Ps 6.10 C47H71N13O18 1105.5040025445 other 5-chloropyoverdin G4R C44H59ClN14O18 1106.3820291645 @@ -622,7 +622,7 @@ other Pyoverdin Syr 19310 (amide) C45H64N12O23 1140.4207264251 other Pyoverdin Syr 19310 C45H63N11O24 1141.4047420099 other Pseudobactin P39167-II C46H63N13O22 1149.4210607761 other Methanobactin C45H58N10O16S5 1154.2635793174 -other Trivanchrobactin C48H65N15O19 1155.4581149844 +other Trivanchrobactin C48H65N15O19 1155.4581149844 SB: 120 other Pyoverdin Pfl 13525 C49H72N14O19 1160.5098162039 other Pseudobactin PA225-II C46H63N13O23 1165.4159753982 other Pseudobactin P39167-I C46H65N13O23 1167.4316254624 @@ -630,28 +630,28 @@ other Pyoverdin Pa6 R (amide) C48H68N16O19 1172.4846640859 other Pyoverdin Pa6 R C48H67N15O20 1173.4686796707 other Pyoverdin G173 C49H70N14O20 1174.4890807618 other Pyoverdin G173 C49H69N13O21 1175.4730963466 -other Streptobactin C51H69N15O18 1179.4945004907 +other Streptobactin C51H69N15O18 1179.4945004907 SB: 266 other Pseudobactin PA225-I C46H65N13O24 1183.4265400845 -other Ferrocin A C51H85N13O19 1183.6084676160 +other Ferrocin A C51H85N13O19 1183.6084676160 SB: 171 other Pyoverdin Pfl W (amide) C48H66N16O20 1186.4639286438 other Pyoverdin Pfl W C48H65N15O21 1187.4479442286 other Pyoverdin 96-312 (amide) C50H75N15O19 1189.5363653054 other Pyoverdin 96-312 C50H74N14O20 1190.5203808902 other Pyoverdin 90-33 C49H71N13O22 1193.4836610329 -other Tribenarthin C51H71N15O19 1197.5050651770 +other Tribenarthin C51H71N15O19 1197.5050651770 SB: 265 other Ferrocin C C52H87N13O19 1197.6241176802 other Ferrocin D C52H87N13O19 1197.6241176802 -other Ferrocin B C51H85N13O20 1199.6033822381 +other Ferrocin B C51H85N13O20 1199.6033822381 SB: 172 other Pyoverdin Pfl W (amide) C48H66N16O21 1202.4588432659 other Pyoverdin Pfl W C48H65N15O22 1203.4428588507 -other Pyoverdin 96-312 C51H74N14O21 1218.5152955123 other Pyoverdin D47 C51H75N15O20 1217.5312799275 other Pyoverdin D47 (amide) C51H75N15O20 1217.5312799275 +other Pyoverdin 96-312 C51H74N14O21 1218.5152955123 other Pyoverdin D47 C51H74N14O21 1218.5152955123 +other Pyoverdin 90-51 C51H74N14O21 1218.5152955123 other Pyoverdin D-TR133 (amide) C52H75N15O20 1229.5312799275 other Pyoverdin D-TR133 C52H74N14O21 1230.5152955123 other Pyoverdin 96-188 C52H76N14O21 1232.5309455765 -other Pyoverdin 90-51 C51H74N14O21 1218.5152955123 other Pyoverdin D-TR133 (gly. amide) C53H77N15O20 1243.5469299917 other Pyoverdin D-TR133 (gly) C53H76N14O21 1244.5309455765 other Pyoverdin 90-51 (amide) C51H75N15O22 1249.5211091717 diff --git a/CycloBranch/SequenceDatabases/tutorials/cb2_tutorial4_db.txt b/CycloBranch/SequenceDatabases/tutorials/cb2_tutorial4_db.txt new file mode 100644 index 0000000..fc77de5 --- /dev/null +++ b/CycloBranch/SequenceDatabases/tutorials/cb2_tutorial4_db.txt @@ -0,0 +1,3 @@ +other Dimethylgliotoxin C15H20N2O4S2 356.0864485208 +other TAFC C39H60N6O15 852.4116652887 +other Desferrioxamine E C27H48N6O9 600.3482771709 diff --git a/CycloBranch/Settings/tutorials/cb2_tutorial1.ini b/CycloBranch/Settings/tutorials/cb2_tutorial1.ini new file mode 100644 index 0000000..f05721e --- /dev/null +++ b/CycloBranch/Settings/tutorials/cb2_tutorial1.ini @@ -0,0 +1,127 @@ +[General] +mode=3 +maximumnumberofthreads=1 +peptidetype=0 +peaklist=cb-jms-data/jemna_obalka/Pyoverdin_standard_CASI_1000_1600_4M_accu0.05_EP45_000001.d/analysis.baf +useprofiledata=1 +scannumber=1 +precursormass=0 +precursoradduct= +precursormasserrortolerance=1 +precursorcharge=1 +fragmentmasserrortolerance=1 +minimumrelativeintensitythreshold=1 +minimumabsoluteintensitythreshold=0 +minimummz=150 +maximummz=0 +fwhm=0.002 +brickdatabase= +maximumbricksincombinationbegin=1 +maximumbricksincombinationmiddle=1 +maximumbricksincombinationend=1 +maximumcumulativemass=0 +modificationsfile= +blindedges=2 +cyclicnterminus=0 +cycliccterminus=0 +internalfragments=0 +enablescrambling=0 +similaritysearch=0 +regularblocksorder=0 +sequencedatabase=D:/CycloBranch-git/cyclobranch/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt +scoretype=3 +hitsreported=100 +sequencetag= +fragmentiontype_0=1 +fragmentiontype_1=0 +fragmentiontype_2=0 +fragmentiontype_3=0 +fragmentiontype_4=0 +fragmentiontype_5=0 +fragmentiontype_6=0 +fragmentiontype_7=0 +fragmentiontype_8=0 +fragmentiontype_9=0 +fragmentiontype_10=0 +fragmentiontype_11=0 +fragmentiontype_12=0 +fragmentiontype_13=0 +fragmentiontype_14=0 +fragmentiontype_15=0 +fragmentiontype_16=0 +fragmentiontype_17=0 +fragmentiontype_18=0 +fragmentiontype_19=0 +fragmentiontype_20=0 +fragmentiontype_21=0 +fragmentiontype_22=0 +fragmentiontype_23=0 +fragmentiontype_24=0 +fragmentiontype_25=0 +fragmentiontype_26=0 +fragmentiontype_27=0 +fragmentiontype_28=0 +fragmentiontype_29=0 +fragmentiontype_30=0 +fragmentiontype_31=0 +fragmentiontype_32=0 +fragmentiontype_33=0 +fragmentiontype_34=0 +fragmentiontype_35=0 +fragmentiontype_36=0 +fragmentiontype_37=0 +fragmentiontype_38=0 +fragmentiontype_39=0 +fragmentiontype_40=0 +fragmentiontype_41=0 +fragmentiontype_42=0 +fragmentiontype_43=0 +fragmentiontype_44=0 +fragmentiontype_45=0 +fragmentiontype_46=0 +fragmentiontype_47=0 +fragmentiontype_48=0 +fragmentiontype_49=0 +fragmentiontype_50=0 +fragmentiontype_51=0 +fragmentiontype_52=0 +fragmentiontype_53=0 +fragmentiontype_54=0 +fragmentiontype_55=0 +fragmentiontype_56=0 +fragmentiontype_57=0 +fragmentiontype_58=0 +fragmentiontype_59=0 +fragmentiontype_60=0 +fragmentiontype_61=0 +fragmentiontype_62=0 +fragmentiontype_63=0 +fragmentiontype_64=0 +fragmentiontype_65=0 +fragmentiontype_66=0 +fragmentiontype_67=0 +fragmentiontype_68=0 +fragmentiontype_69=0 +fragmentiontype_70=0 +fragmentiontype_71=0 +fragmentiontype_72=0 +fragmentiontype_73=0 +fragmentiontype_74=0 +neutrallosstype_0=0 +neutrallossformula_0=H2O +maximumcombinedlosses=0 +reportunmatchedtheoreticalpeaks=0 +generateisotopepattern=1 +minimumpatternsize=3 +minimumfeaturesize=1 +minimumiontypes=1 +basicformulacheck=0 +advancedformulacheck=1 +noratiocheck=1 +mzdifftolerance=0 +intensitytolerance=0 +searchedsequence= +searchedsequenceNtermmodif= +searchedsequenceCtermmodif= +searchedsequenceTmodif= +searchedsequenceformula= diff --git a/CycloBranch/Settings/tutorials/cb2_tutorial2.ini b/CycloBranch/Settings/tutorials/cb2_tutorial2.ini new file mode 100644 index 0000000..b93eb78 --- /dev/null +++ b/CycloBranch/Settings/tutorials/cb2_tutorial2.ini @@ -0,0 +1,125 @@ +[General] +mode=3 +maximumnumberofthreads=1 +peptidetype=1 +peaklist=HL_1to1_profile_BB7_01_4492.d/analysis.baf +useprofiledata=1 +scannumber=1 +precursormass=0 +precursoradduct= +precursormasserrortolerance=1 +precursorcharge=2 +fragmentmasserrortolerance=2 +minimumrelativeintensitythreshold=3 +minimumabsoluteintensitythreshold=100000 +minimummz=650 +maximummz=1400 +fwhm=0.05 +brickdatabase= +maximumbricksincombinationbegin=1 +maximumbricksincombinationmiddle=1 +maximumbricksincombinationend=1 +maximumcumulativemass=0 +modificationsfile= +blindedges=1 +cyclicnterminus=0 +cycliccterminus=0 +internalfragments=0 +enablescrambling=0 +similaritysearch=0 +regularblocksorder=0 +sequencedatabase=D:/CycloBranch-git/cyclobranch/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt +scoretype=3 +hitsreported=1000 +sequencetag= +fragmentiontype_0=0 +fragmentiontype_1=0 +fragmentiontype_2=0 +fragmentiontype_3=0 +fragmentiontype_4=0 +fragmentiontype_5=0 +fragmentiontype_6=1 +fragmentiontype_7=0 +fragmentiontype_8=0 +fragmentiontype_9=0 +fragmentiontype_10=0 +fragmentiontype_11=0 +fragmentiontype_12=0 +fragmentiontype_13=0 +fragmentiontype_14=0 +fragmentiontype_15=0 +fragmentiontype_16=0 +fragmentiontype_17=0 +fragmentiontype_18=0 +fragmentiontype_19=0 +fragmentiontype_20=0 +fragmentiontype_21=0 +fragmentiontype_22=0 +fragmentiontype_23=0 +fragmentiontype_24=0 +fragmentiontype_25=0 +fragmentiontype_26=0 +fragmentiontype_27=0 +fragmentiontype_28=0 +fragmentiontype_29=0 +fragmentiontype_30=0 +fragmentiontype_31=0 +fragmentiontype_32=0 +fragmentiontype_33=0 +fragmentiontype_34=0 +fragmentiontype_35=0 +fragmentiontype_36=0 +fragmentiontype_37=0 +fragmentiontype_38=0 +fragmentiontype_39=0 +fragmentiontype_40=0 +fragmentiontype_41=0 +fragmentiontype_42=0 +fragmentiontype_43=0 +fragmentiontype_44=0 +fragmentiontype_45=0 +fragmentiontype_46=0 +fragmentiontype_47=0 +fragmentiontype_48=0 +fragmentiontype_49=0 +fragmentiontype_50=0 +fragmentiontype_51=0 +fragmentiontype_52=0 +fragmentiontype_53=0 +fragmentiontype_54=0 +fragmentiontype_55=0 +fragmentiontype_56=0 +fragmentiontype_57=0 +fragmentiontype_58=0 +fragmentiontype_59=0 +fragmentiontype_60=0 +fragmentiontype_61=0 +fragmentiontype_62=0 +fragmentiontype_63=0 +fragmentiontype_64=0 +fragmentiontype_65=0 +fragmentiontype_66=0 +fragmentiontype_67=0 +fragmentiontype_68=0 +fragmentiontype_69=0 +fragmentiontype_70=0 +fragmentiontype_71=0 +fragmentiontype_72=0 +fragmentiontype_73=0 +fragmentiontype_74=0 +maximumcombinedlosses=0 +reportunmatchedtheoreticalpeaks=0 +generateisotopepattern=1 +minimumpatternsize=4 +minimumfeaturesize=4 +minimumiontypes=1 +basicformulacheck=0 +advancedformulacheck=1 +noratiocheck=1 +mzdifftolerance=0 +intensitytolerance=0 +searchedsequence= +searchedsequenceNtermmodif= +searchedsequenceCtermmodif= +searchedsequenceTmodif= +searchedsequenceformula= diff --git a/CycloBranch/Settings/tutorials/cb2_tutorial3.ini b/CycloBranch/Settings/tutorials/cb2_tutorial3.ini new file mode 100644 index 0000000..53080c2 --- /dev/null +++ b/CycloBranch/Settings/tutorials/cb2_tutorial3.ini @@ -0,0 +1,137 @@ +[General] +mode=4 +maximumnumberofthreads=1 +peptidetype=1 +peaklist=HL_1to1_profile_BB7_01_4492.d/analysis.baf +useprofiledata=0 +scannumber=1 +precursormass=0 +precursoradduct= +precursormasserrortolerance=1 +precursorcharge=2 +fragmentmasserrortolerance=2 +minimumrelativeintensitythreshold=3 +minimumabsoluteintensitythreshold=100000 +minimummz=650 +maximummz=1400 +fwhm=0.05 +brickdatabase= +maximumbricksincombinationbegin=1 +maximumbricksincombinationmiddle=1 +maximumbricksincombinationend=1 +maximumcumulativemass=0 +modificationsfile= +blindedges=1 +cyclicnterminus=0 +cycliccterminus=0 +internalfragments=0 +enablescrambling=0 +similaritysearch=0 +regularblocksorder=0 +sequencedatabase=D:/CycloBranch-git/cyclobranch/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt +scoretype=3 +hitsreported=1000 +sequencetag= +fragmentiontype_0=0 +fragmentiontype_1=0 +fragmentiontype_2=0 +fragmentiontype_3=0 +fragmentiontype_4=0 +fragmentiontype_5=0 +fragmentiontype_6=1 +fragmentiontype_7=0 +fragmentiontype_8=0 +fragmentiontype_9=0 +fragmentiontype_10=0 +fragmentiontype_11=0 +fragmentiontype_12=0 +fragmentiontype_13=0 +fragmentiontype_14=0 +fragmentiontype_15=0 +fragmentiontype_16=0 +fragmentiontype_17=0 +fragmentiontype_18=0 +fragmentiontype_19=0 +fragmentiontype_20=0 +fragmentiontype_21=0 +fragmentiontype_22=0 +fragmentiontype_23=0 +fragmentiontype_24=0 +fragmentiontype_25=0 +fragmentiontype_26=0 +fragmentiontype_27=0 +fragmentiontype_28=0 +fragmentiontype_29=0 +fragmentiontype_30=0 +fragmentiontype_31=0 +fragmentiontype_32=0 +fragmentiontype_33=0 +fragmentiontype_34=0 +fragmentiontype_35=0 +fragmentiontype_36=0 +fragmentiontype_37=0 +fragmentiontype_38=0 +fragmentiontype_39=0 +fragmentiontype_40=0 +fragmentiontype_41=0 +fragmentiontype_42=0 +fragmentiontype_43=0 +fragmentiontype_44=0 +fragmentiontype_45=0 +fragmentiontype_46=0 +fragmentiontype_47=0 +fragmentiontype_48=0 +fragmentiontype_49=0 +fragmentiontype_50=0 +fragmentiontype_51=0 +fragmentiontype_52=0 +fragmentiontype_53=0 +fragmentiontype_54=0 +fragmentiontype_55=0 +fragmentiontype_56=0 +fragmentiontype_57=0 +fragmentiontype_58=0 +fragmentiontype_59=0 +fragmentiontype_60=0 +fragmentiontype_61=0 +fragmentiontype_62=0 +fragmentiontype_63=0 +fragmentiontype_64=0 +fragmentiontype_65=0 +fragmentiontype_66=0 +fragmentiontype_67=0 +fragmentiontype_68=0 +fragmentiontype_69=0 +fragmentiontype_70=0 +fragmentiontype_71=0 +fragmentiontype_72=0 +fragmentiontype_73=0 +fragmentiontype_74=0 +neutrallosstype_0=1 +neutrallossformula_0=H +neutrallosstype_1=1 +neutrallossformula_1=C +neutrallosstype_2=1 +neutrallossformula_2=O +neutrallosstype_3=1 +neutrallossformula_3=N +neutrallosstype_4=0 +neutrallossformula_4=S:1 +neutrallosstype_5=0 +neutrallossformula_5=P:1 +maximumcombinedlosses=180 +reportunmatchedtheoreticalpeaks=0 +generateisotopepattern=1 +minimumpatternsize=4 +minimumfeaturesize=4 +minimumiontypes=1 +basicformulacheck=1 +advancedformulacheck=1 +noratiocheck=1 +mzdifftolerance=0 +intensitytolerance=10 +searchedsequence= +searchedsequenceNtermmodif= +searchedsequenceCtermmodif= +searchedsequenceTmodif= +searchedsequenceformula= diff --git a/CycloBranch/Settings/tutorials/cb2_tutorial4.ini b/CycloBranch/Settings/tutorials/cb2_tutorial4.ini new file mode 100644 index 0000000..35d5213 --- /dev/null +++ b/CycloBranch/Settings/tutorials/cb2_tutorial4.ini @@ -0,0 +1,125 @@ +[General] +mode=3 +maximumnumberofthreads=1 +peptidetype=1 +peaklist=D:/raw_data/MSI/ITO14_new_reduced.imzML +useprofiledata=1 +scannumber=1 +precursormass=0 +precursoradduct= +precursormasserrortolerance=1 +precursorcharge=1 +fragmentmasserrortolerance=2 +minimumrelativeintensitythreshold=1 +minimumabsoluteintensitythreshold=0 +minimummz=350 +maximummz=950 +fwhm=0.001 +brickdatabase= +maximumbricksincombinationbegin=1 +maximumbricksincombinationmiddle=1 +maximumbricksincombinationend=1 +maximumcumulativemass=0 +modificationsfile= +blindedges=1 +cyclicnterminus=0 +cycliccterminus=0 +internalfragments=0 +enablescrambling=0 +similaritysearch=0 +regularblocksorder=0 +sequencedatabase=D:/CycloBranch-git/cyclobranch/CycloBranch/SequenceDatabases/tutorials/cb2_tutorial4_db.txt +scoretype=3 +hitsreported=1000 +sequencetag= +fragmentiontype_0=0 +fragmentiontype_1=1 +fragmentiontype_2=1 +fragmentiontype_3=0 +fragmentiontype_4=0 +fragmentiontype_5=0 +fragmentiontype_6=1 +fragmentiontype_7=0 +fragmentiontype_8=0 +fragmentiontype_9=0 +fragmentiontype_10=0 +fragmentiontype_11=0 +fragmentiontype_12=0 +fragmentiontype_13=0 +fragmentiontype_14=0 +fragmentiontype_15=0 +fragmentiontype_16=0 +fragmentiontype_17=0 +fragmentiontype_18=0 +fragmentiontype_19=0 +fragmentiontype_20=0 +fragmentiontype_21=0 +fragmentiontype_22=0 +fragmentiontype_23=0 +fragmentiontype_24=0 +fragmentiontype_25=0 +fragmentiontype_26=0 +fragmentiontype_27=0 +fragmentiontype_28=0 +fragmentiontype_29=0 +fragmentiontype_30=0 +fragmentiontype_31=0 +fragmentiontype_32=0 +fragmentiontype_33=0 +fragmentiontype_34=0 +fragmentiontype_35=0 +fragmentiontype_36=0 +fragmentiontype_37=0 +fragmentiontype_38=0 +fragmentiontype_39=0 +fragmentiontype_40=0 +fragmentiontype_41=0 +fragmentiontype_42=0 +fragmentiontype_43=0 +fragmentiontype_44=0 +fragmentiontype_45=0 +fragmentiontype_46=0 +fragmentiontype_47=0 +fragmentiontype_48=0 +fragmentiontype_49=0 +fragmentiontype_50=0 +fragmentiontype_51=0 +fragmentiontype_52=0 +fragmentiontype_53=0 +fragmentiontype_54=0 +fragmentiontype_55=0 +fragmentiontype_56=0 +fragmentiontype_57=0 +fragmentiontype_58=0 +fragmentiontype_59=0 +fragmentiontype_60=0 +fragmentiontype_61=0 +fragmentiontype_62=0 +fragmentiontype_63=0 +fragmentiontype_64=0 +fragmentiontype_65=0 +fragmentiontype_66=0 +fragmentiontype_67=0 +fragmentiontype_68=0 +fragmentiontype_69=0 +fragmentiontype_70=0 +fragmentiontype_71=0 +fragmentiontype_72=0 +fragmentiontype_73=0 +fragmentiontype_74=0 +maximumcombinedlosses=0 +reportunmatchedtheoreticalpeaks=0 +generateisotopepattern=1 +minimumpatternsize=3 +minimumfeaturesize=50 +minimumiontypes=1 +basicformulacheck=0 +advancedformulacheck=1 +noratiocheck=1 +mzdifftolerance=0 +intensitytolerance=0 +searchedsequence= +searchedsequenceNtermmodif= +searchedsequenceCtermmodif= +searchedsequenceTmodif= +searchedsequenceformula= diff --git a/CycloBranch/Settings/tutorials/cb2_tutorial5.ini b/CycloBranch/Settings/tutorials/cb2_tutorial5.ini new file mode 100644 index 0000000..75dcf44 --- /dev/null +++ b/CycloBranch/Settings/tutorials/cb2_tutorial5.ini @@ -0,0 +1,137 @@ +[General] +mode=4 +maximumnumberofthreads=1 +peptidetype=1 +peaklist=D:/raw_data/MSI/ITO14_new_reduced.imzML +useprofiledata=1 +scannumber=1 +precursormass=0 +precursoradduct= +precursormasserrortolerance=1 +precursorcharge=1 +fragmentmasserrortolerance=2 +minimumrelativeintensitythreshold=1 +minimumabsoluteintensitythreshold=0 +minimummz=350 +maximummz=950 +fwhm=0.001 +brickdatabase= +maximumbricksincombinationbegin=1 +maximumbricksincombinationmiddle=1 +maximumbricksincombinationend=1 +maximumcumulativemass=0 +modificationsfile= +blindedges=1 +cyclicnterminus=0 +cycliccterminus=0 +internalfragments=0 +enablescrambling=0 +similaritysearch=0 +regularblocksorder=0 +sequencedatabase=D:/CycloBranch-git/cyclobranch/CycloBranch/SequenceDatabases/siderophores/709_siderophores_and_secondary_metabolites.txt +scoretype=3 +hitsreported=1000 +sequencetag= +fragmentiontype_0=0 +fragmentiontype_1=1 +fragmentiontype_2=1 +fragmentiontype_3=0 +fragmentiontype_4=0 +fragmentiontype_5=0 +fragmentiontype_6=1 +fragmentiontype_7=0 +fragmentiontype_8=0 +fragmentiontype_9=0 +fragmentiontype_10=0 +fragmentiontype_11=0 +fragmentiontype_12=0 +fragmentiontype_13=0 +fragmentiontype_14=0 +fragmentiontype_15=0 +fragmentiontype_16=0 +fragmentiontype_17=0 +fragmentiontype_18=0 +fragmentiontype_19=0 +fragmentiontype_20=0 +fragmentiontype_21=0 +fragmentiontype_22=0 +fragmentiontype_23=0 +fragmentiontype_24=0 +fragmentiontype_25=0 +fragmentiontype_26=0 +fragmentiontype_27=0 +fragmentiontype_28=0 +fragmentiontype_29=0 +fragmentiontype_30=0 +fragmentiontype_31=0 +fragmentiontype_32=0 +fragmentiontype_33=0 +fragmentiontype_34=0 +fragmentiontype_35=0 +fragmentiontype_36=0 +fragmentiontype_37=0 +fragmentiontype_38=0 +fragmentiontype_39=0 +fragmentiontype_40=0 +fragmentiontype_41=0 +fragmentiontype_42=0 +fragmentiontype_43=0 +fragmentiontype_44=0 +fragmentiontype_45=0 +fragmentiontype_46=0 +fragmentiontype_47=0 +fragmentiontype_48=0 +fragmentiontype_49=0 +fragmentiontype_50=0 +fragmentiontype_51=0 +fragmentiontype_52=0 +fragmentiontype_53=0 +fragmentiontype_54=0 +fragmentiontype_55=0 +fragmentiontype_56=0 +fragmentiontype_57=0 +fragmentiontype_58=0 +fragmentiontype_59=0 +fragmentiontype_60=0 +fragmentiontype_61=0 +fragmentiontype_62=0 +fragmentiontype_63=0 +fragmentiontype_64=0 +fragmentiontype_65=0 +fragmentiontype_66=0 +fragmentiontype_67=0 +fragmentiontype_68=0 +fragmentiontype_69=0 +fragmentiontype_70=0 +fragmentiontype_71=0 +fragmentiontype_72=0 +fragmentiontype_73=0 +fragmentiontype_74=0 +neutrallosstype_0=1 +neutrallossformula_0=H +neutrallosstype_1=1 +neutrallossformula_1=C +neutrallosstype_2=1 +neutrallossformula_2=O +neutrallosstype_3=1 +neutrallossformula_3=N +neutrallosstype_4=1 +neutrallossformula_4=S:2 +neutrallosstype_5=0 +neutrallossformula_5=P:1 +maximumcombinedlosses=150 +reportunmatchedtheoreticalpeaks=0 +generateisotopepattern=1 +minimumpatternsize=3 +minimumfeaturesize=50 +minimumiontypes=1 +basicformulacheck=1 +advancedformulacheck=1 +noratiocheck=1 +mzdifftolerance=2 +intensitytolerance=5 +searchedsequence= +searchedsequenceNtermmodif= +searchedsequenceCtermmodif= +searchedsequenceTmodif= +searchedsequenceformula= diff --git a/CycloBranch/Settings/tutorials/cb2_tutorial6.ini b/CycloBranch/Settings/tutorials/cb2_tutorial6.ini new file mode 100644 index 0000000..0feecf6 --- /dev/null +++ b/CycloBranch/Settings/tutorials/cb2_tutorial6.ini @@ -0,0 +1,60 @@ +[General] +mode=1 +maximumnumberofthreads=1 +peptidetype=6 +peaklist=PCH_c325w1e15_UHR_onlinecal_000001.d/analysis.baf +useprofiledata=1 +scannumber=1 +precursormass=325.06733 +precursoradduct= +precursormasserrortolerance=2 +precursorcharge=1 +fragmentmasserrortolerance=2 +minimumrelativeintensitythreshold=5 +minimumabsoluteintensitythreshold=0 +minimummz=100 +maximummz=0 +fwhm=0.001 +brickdatabase=BrickDatabases/inhouse_siderophores_blocks.txt +maximumbricksincombinationbegin=2 +maximumbricksincombinationmiddle=2 +maximumbricksincombinationend=2 +maximumcumulativemass=0 +modificationsfile= +blindedges=1 +cyclicnterminus=0 +cycliccterminus=0 +internalfragments=0 +enablescrambling=0 +similaritysearch=0 +regularblocksorder=0 +sequencedatabase= +scoretype=1 +hitsreported=100 +sequencetag= +neutrallosstype_0=1 +neutrallossformula_0=H +neutrallosstype_1=1 +neutrallossformula_1=C +neutrallosstype_2=1 +neutrallossformula_2=O +neutrallosstype_3=1 +neutrallossformula_3=N +neutrallosstype_4=1 +neutrallossformula_4=S:2 +maximumcombinedlosses=38 +reportunmatchedtheoreticalpeaks=0 +generateisotopepattern=1 +minimumpatternsize=1 +minimumfeaturesize=1 +minimumiontypes=1 +basicformulacheck=1 +advancedformulacheck=1 +noratiocheck=1 +mzdifftolerance=0 +intensitytolerance=10 +searchedsequence= +searchedsequenceNtermmodif= +searchedsequenceCtermmodif= +searchedsequenceTmodif= +searchedsequenceformula=C14H16N2O3S2 diff --git a/CycloBranch/core/cBrick.cpp b/CycloBranch/core/cBrick.cpp index 7e124c4..ac43168 100644 --- a/CycloBranch/core/cBrick.cpp +++ b/CycloBranch/core/cBrick.cpp @@ -33,6 +33,8 @@ void cBrick::clear() { composition = ""; artificial = false; residuelosstype = h2o_loss; + losses.clear(); + lossids.clear(); } @@ -67,6 +69,16 @@ vector& cBrick::getAcronyms() { } +string& cBrick::getLosses() { + return losses; +} + + +vector& cBrick::getLossIDs() { + return lossids; +} + + vector& cBrick::getReferences() { return references; } @@ -142,6 +154,16 @@ void cBrick::setAcronyms(const string& acronyms) { } +void cBrick::setLosses(const string& str) { + losses = str; +} + + +void cBrick::setLossIDs(vector& lossids) { + this->lossids = lossids; +} + + void cBrick::setReferences(const string& references) { this->references.clear(); string s = ""; @@ -270,7 +292,7 @@ string cBrick::getAcronymsWithReferencesAsHTMLString() { if (!correctreference) { rx = "^CSID: [0-9]+$"; if (regex_search(references[i], rx)) { - s += ""; + s += ""; s += acronyms[i]; s += ""; correctreference = true; @@ -281,18 +303,29 @@ string cBrick::getAcronymsWithReferencesAsHTMLString() { if (!correctreference) { rx = "^CID: [0-9]+$"; if (regex_search(references[i], rx)) { - s += ""; + s += ""; s += acronyms[i]; s += ""; correctreference = true; } } + // ChEBI + if (!correctreference) { + rx = "^CHEBI: [0-9]+$"; + if (regex_search(references[i], rx)) { + s += ""; + s += name; + s += ""; + correctreference = true; + } + } + // PDB if (!correctreference) { rx = "^PDB: ([A-Z]|[0-9])+$"; if (regex_search(references[i], rx)) { - s += ""; + s += ""; s += acronyms[i]; s += ""; correctreference = true; @@ -303,7 +336,7 @@ string cBrick::getAcronymsWithReferencesAsHTMLString() { if (!correctreference) { rx = " in CSID: [0-9]+$"; if (regex_search(references[i], rx)) { - s += ""; + s += ""; s += acronyms[i]; s += ""; correctreference = true; @@ -314,7 +347,7 @@ string cBrick::getAcronymsWithReferencesAsHTMLString() { if (!correctreference) { rx = " in CID: [0-9]+$"; if (regex_search(references[i], rx)) { - s += ""; + s += ""; s += acronyms[i]; s += ""; correctreference = true; @@ -325,7 +358,7 @@ string cBrick::getAcronymsWithReferencesAsHTMLString() { if (!correctreference) { rx = " in: NOR"; if (regex_search(references[i], rx)) { - s += ""; + s += ""; s += acronyms[i]; s += ""; correctreference = true; @@ -379,6 +412,8 @@ void cBrick::store(ofstream& os) { storeString(composition, os); os.write((char *)&artificial, sizeof(bool)); os.write((char *)&residuelosstype, sizeof(eResidueLossType)); + storeString(losses, os); + storeIntVector(lossids, os); } @@ -392,5 +427,7 @@ void cBrick::load(ifstream& is) { loadString(composition, is); is.read((char *)&artificial, sizeof(bool)); is.read((char *)&residuelosstype, sizeof(eResidueLossType)); + loadString(losses, is); + loadIntVector(lossids, is); } diff --git a/CycloBranch/core/cBrick.h b/CycloBranch/core/cBrick.h index 4e413d9..3e24c6f 100644 --- a/CycloBranch/core/cBrick.h +++ b/CycloBranch/core/cBrick.h @@ -48,6 +48,8 @@ class cBrick { string composition; bool artificial; eResidueLossType residuelosstype; + string losses; + vector lossids; public: @@ -85,14 +87,14 @@ class cBrick { /** - \brief Access to a string variable which stores a summary molecular formula of the brick. + \brief Access to a string variable which stores a molecular formula of the brick. \retval reference to a string */ string& getSummary(); /** - \brief Access to a map which stores a summary molecular formula of the brick. + \brief Access to a map which stores a molecular formula of the brick. \retval map reference to a map */ map& getSummaryMap(); @@ -105,6 +107,20 @@ class cBrick { vector& getAcronyms(); + /** + \brief Access to a string variable which stores a list of neutral losses. + \retval reference to a string + */ + string& getLosses(); + + + /** + \brief Access to a vector of identifiers of neutral losses + \retval reference to a vector of identifiers of neutral losses + */ + vector& getLossIDs(); + + /** \brief Access to a vector of strings which stores references (e.g., to ChemSpider) of all izomers corresponding to the brick. \retval reference to a vector of strings @@ -156,7 +172,7 @@ class cBrick { /** - \brief Create an internal map of atoms from the summary formula. + \brief Create a map of atoms from the molecular formula. */ void createSummaryMap(); @@ -168,6 +184,20 @@ class cBrick { void setAcronyms(const string& acronyms); + /** + \brief Set the list of losses. + \param str reference to a string + */ + void setLosses(const string& str); + + + /** + \brief Set a vector of identifiers of neutral losses. + \param lossids a vector of identifiers of neutral losses + */ + void setLossIDs(vector& lossids); + + /** \brief Set references (e.g., to ChemSpider) of all izomers corresponding to the brick. \param references reference to a string where references to izomers are separated by '/' diff --git a/CycloBranch/core/cBricksDatabase.cpp b/CycloBranch/core/cBricksDatabase.cpp index 3a421e1..ce2576a 100644 --- a/CycloBranch/core/cBricksDatabase.cpp +++ b/CycloBranch/core/cBricksDatabase.cpp @@ -56,6 +56,86 @@ void generateBricksPermutations(vector& bricks, vector& currentp } +void cBricksDatabase::addLossToMap(string& lossstr, vector& lossids) { + lossids.clear(); + + if (lossstr.size() == 0) { + return; + } + + map tmpmap; + string tmpstring; + int tmpsize; + + cSummaryFormula formula; + double tmpmass; + + size_t last = 0; + size_t next = 0; + while ((next = lossstr.find(";", last)) != string::npos) { + tmpstring = lossstr.substr(last, next - last); + + if (lossorders.count(tmpstring) > 0) { + lossids.push_back(lossorders[tmpstring]); + } + else { + tmpsize = (int)lossorders.size(); + lossorders[tmpstring] = tmpsize; + lossids.push_back(tmpsize); + + losssummaries.push_back(tmpstring); + + formula.clear(); + formula.addFormula(tmpstring, true); + tmpmass = formula.getMass(); + lossmasses.push_back(tmpmass); + + tmpmap.clear(); + tmpstring = formula.getSummary(); + addStringFormulaToMap(tmpstring, tmpmap); + lossmaps.push_back(tmpmap); + } + + last = next + 1; + } + + tmpstring = lossstr.substr(last); + + if (lossorders.count(tmpstring) > 0) { + lossids.push_back(lossorders[tmpstring]); + } + else { + tmpsize = (int)lossorders.size(); + lossorders[tmpstring] = tmpsize; + lossids.push_back(tmpsize); + + losssummaries.push_back(tmpstring); + + formula.clear(); + formula.addFormula(tmpstring, true); + tmpmass = formula.getMass(); + lossmasses.push_back(tmpmass); + + tmpmap.clear(); + tmpstring = formula.getSummary(); + addStringFormulaToMap(tmpstring, tmpmap); + lossmaps.push_back(tmpmap); + } +} + + +double cBricksDatabase::getMassFromCombCounts(vector& combcounts, vector& combmasses) { + int size = (int)combcounts.size(); + double mass = 0; + for (int i = 0; i < size; i++) { + if (combcounts[i] > 0) { + mass += (double)(combcounts[i]) * combmasses[i]; + } + } + return mass; +} + + bool cBricksDatabase::nextCombination(vector& combarray, int numberofbasicbricks, int maximumbricksincombination, double maximumcumulativemass, double neutralprecursormass) { int pointer = 0; int cyFlag = 0; @@ -102,6 +182,250 @@ bool cBricksDatabase::nextCombination(vector& combarray, int numberofbasicb return true; + } + else { + + cyFlag = 1; + pointer++; + + } + + } while (pointer < maximumbricksincombination); + + return false; +} + + +bool cBricksDatabase::nextCombinationFast(vector& combarray, vector& combcounts, vector& combmasses, double& mass, int numberofbasicbricks, int maximumbricksincombination, double maximumcumulativemass, double neutralprecursormass) { + int pointer = 0; + int cyFlag = 0; + + mass = 0; + + do { + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer]++; + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]++; + } + + // set combarray[pointer] to the maximum value when outside of the mass range + mass = getMassFromCombCounts(combcounts, combmasses); + + if ((cyFlag == 0) && (combarray[pointer] <= numberofbasicbricks) && (((maximumcumulativemass > 0) && (mass > maximumcumulativemass)) || ((neutralprecursormass > 0) && (mass > neutralprecursormass)))) { + if (combarray[pointer] > 0) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer] = numberofbasicbricks + 1; + + mass = getMassFromCombCounts(combcounts, combmasses); + } + + if (combarray[pointer] <= numberofbasicbricks) { + + if (cyFlag > 0) { + + for (int i = pointer - 1; i >= 0; i--) { + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]--; + } + + combarray[i] = combarray[pointer]; + + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]++; + } + } + + // skip combinations outside of the mass range + mass = getMassFromCombCounts(combcounts, combmasses); + + while ((combarray[pointer] <= numberofbasicbricks) && (pointer < maximumbricksincombination - 1) && (((maximumcumulativemass > 0) && (mass > maximumcumulativemass)) || ((neutralprecursormass > 0) && (mass > neutralprecursormass)))) { + pointer++; + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer]++; + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]++; + } + + for (int i = pointer - 1; i >= 0; i--) { + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]--; + } + + combarray[i] = combarray[pointer]; + + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]++; + } + } + + mass = getMassFromCombCounts(combcounts, combmasses); + } + + if ((combarray[pointer] > numberofbasicbricks) || ((maximumcumulativemass > 0) && (mass > maximumcumulativemass)) || ((neutralprecursormass > 0) && (mass > neutralprecursormass))) { + return false; + } + + } + + return true; + + } + else { + + cyFlag = 1; + pointer++; + + } + + } while (pointer < maximumbricksincombination); + + return false; +} + + +bool cBricksDatabase::nextCombinationFastLimited(vector& combarray, vector& combcounts, vector& comblimits, vector& combmasses, double& mass, int numberofbasicbricks, int maximumbricksincombination, double maximumcumulativemass, double neutralprecursormass) { + int pointer = 0; + int cyFlag = 0; + int lastval; + + mass = 0; + + do { + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer]++; + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]++; + } + + // set combarray[pointer] to the maximum value when outside of the mass range + mass = getMassFromCombCounts(combcounts, combmasses); + + if ((cyFlag == 0) && (combarray[pointer] <= numberofbasicbricks) && (((maximumcumulativemass > 0) && (mass > maximumcumulativemass)) || ((neutralprecursormass > 0) && (mass > neutralprecursormass)) || ((comblimits[combarray[pointer] - 1] > 0) && (combcounts[combarray[pointer] - 1] > comblimits[combarray[pointer] - 1])))) { + + if (((maximumcumulativemass > 0) && (mass > maximumcumulativemass)) || ((neutralprecursormass > 0) && (mass > neutralprecursormass))) { + + lastval = combarray[pointer]; + + if (combarray[pointer] > 0) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer] = numberofbasicbricks + 1; + + while ((pointer + 1 < maximumbricksincombination) && (combarray[pointer + 1] >= lastval - 1)) { + + pointer++; + + if (combarray[pointer] > 0) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer] = numberofbasicbricks + 1; + + } + + } + else { + + while ((combarray[pointer] <= numberofbasicbricks) && ((comblimits[combarray[pointer] - 1] > 0) && (combcounts[combarray[pointer] - 1] > comblimits[combarray[pointer] - 1]))) { + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer]++; + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]++; + } + + } + + } + + mass = getMassFromCombCounts(combcounts, combmasses); + + } + + if (combarray[pointer] <= numberofbasicbricks) { + + if (cyFlag > 0) { + + for (int i = pointer - 1; i >= 0; i--) { + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]--; + } + + combarray[i] = combarray[i + 1]; + while ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks) && (comblimits[combarray[i] - 1] > 0) && (combcounts[combarray[i] - 1] + 1 > comblimits[combarray[i] - 1])) { + combarray[i]++; + } + + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]++; + } + } + + // skip combinations outside of the mass range + mass = getMassFromCombCounts(combcounts, combmasses); + + while ((combarray[pointer] <= numberofbasicbricks) && (pointer < maximumbricksincombination - 1) && (((maximumcumulativemass > 0) && (mass > maximumcumulativemass)) || ((neutralprecursormass > 0) && (mass > neutralprecursormass)) || ((comblimits[combarray[pointer] - 1] > 0) && (combcounts[combarray[pointer] - 1] > comblimits[combarray[pointer] - 1])) || (combarray[0] > numberofbasicbricks))) { + pointer++; + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]--; + } + + combarray[pointer]++; + + if ((combarray[pointer] > 0) && (combarray[pointer] <= numberofbasicbricks)) { + combcounts[combarray[pointer] - 1]++; + } + + for (int i = pointer - 1; i >= 0; i--) { + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]--; + } + + combarray[i] = combarray[i + 1]; + while ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks) && (comblimits[combarray[i] - 1] > 0) && (combcounts[combarray[i] - 1] + 1 > comblimits[combarray[i] - 1])) { + combarray[i]++; + } + + if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { + combcounts[combarray[i] - 1]++; + } + } + + mass = getMassFromCombCounts(combcounts, combmasses); + } + + if ((combarray[pointer] > numberofbasicbricks) || ((maximumcumulativemass > 0) && (mass > maximumcumulativemass)) || ((neutralprecursormass > 0) && (mass > neutralprecursormass)) || ((comblimits[combarray[pointer] - 1] > 0) && (combcounts[combarray[pointer] - 1] > comblimits[combarray[pointer] - 1])) || (combarray[0] > numberofbasicbricks)) { + return false; + } + + } + + return true; + } else { @@ -122,7 +446,7 @@ cBricksDatabase::cBricksDatabase() { int cBricksDatabase::loadFromPlainTextStream(ifstream &stream, string& errormessage, bool ignoreerrors, bool skiph2blocks) { - string s; + string s, tmps; cBrick b; size_t pos; double mass; @@ -133,6 +457,7 @@ int cBricksDatabase::loadFromPlainTextStream(ifstream &stream, string& errormess bool error = false; errormessage = ""; cSummaryFormula formula; + vector lossids; bricks.clear(); while (stream.good()) { @@ -200,6 +525,19 @@ int cBricksDatabase::loadFromPlainTextStream(ifstream &stream, string& errormess break; } + // load the list of losses + pos = s.find('\t'); + if (pos != string::npos) { + tmps = s.substr(0, pos); + b.setLosses(tmps); + addLossToMap(tmps, lossids); + b.setLossIDs(lossids); + s = s.substr(pos + 1); + } + else { + // nothing to do - compatibility with the old format of database + } + // load references #if OS_TYPE != WIN if ((s.size() > 0) && (s.back() == '\r')) { @@ -248,6 +586,7 @@ void cBricksDatabase::storeToPlainTextStream(ofstream &stream) { stream << bricks[i].getAcronymsAsString() << "\t"; stream << bricks[i].getSummary() << "\t"; stream << std::fixed << std::setprecision(10) << bricks[i].getMass() << "\t"; + stream << bricks[i].getLosses() << "\t"; stream << bricks[i].getReferencesAsString() << endl; } } @@ -278,7 +617,8 @@ cBrick& cBricksDatabase::operator[](int position) { double cBricksDatabase::getMassOfComposition(vector& combarray, int numberofbasicbricks) { double mass = 0; int i = 0; - while (i < (int)combarray.size()) { + int size = (int)combarray.size(); + while (i < size) { if ((combarray[i] > 0) && (combarray[i] <= numberofbasicbricks)) { mass += bricks[combarray[i] - 1].getMass(); } @@ -448,6 +788,10 @@ string cBricksDatabase::getTagNameOfTPeptide(string& tcomposition) { void cBricksDatabase::clear() { bricks.clear(); + lossorders.clear(); + lossmasses.clear(); + losssummaries.clear(); + lossmaps.clear(); } @@ -543,6 +887,11 @@ void cBricksDatabase::store(ofstream& os) { for (int i = 0; i < (int)bricks.size(); i++) { bricks[i].store(os); } + + storeStringIntMap(lossorders, os); + storeDoubleVector(lossmasses, os); + storeStringVector(losssummaries, os); + storeStringIntMapVector(lossmaps, os); } @@ -555,6 +904,11 @@ void cBricksDatabase::load(ifstream& is) { for (int i = 0; i < (int)bricks.size(); i++) { bricks[i].load(is); } + + loadStringIntMap(lossorders, is); + loadDoubleVector(lossmasses, is); + loadStringVector(losssummaries, is); + loadStringIntMapVector(lossmaps, is); } @@ -594,3 +948,38 @@ bool cBricksDatabase::checkKetideBlocks(cBrick& brickseries, bool regularblockso return false; } + +double cBricksDatabase::getMassOfNeutralLosses(vector& lossids) { + int size = (int)lossmasses.size(); + double mass = 0; + for (auto& it : lossids) { + if (it < size) { + mass += lossmasses[it]; + } + } + return mass; +} + + +string cBricksDatabase::getSummaryFormulaOfNeutralLosses(vector& lossids) { + int size = (int)losssummaries.size(); + string summary = ""; + for (auto& it : lossids) { + if (it < size) { + summary += losssummaries[it]; + } + } + return summary; +} + + +void cBricksDatabase::getMapOfNeutralLosses(vector& lossids, map& summarymap) { + int size = (int)lossmaps.size(); + summarymap.clear(); + for (auto& it : lossids) { + if (it < size) { + mergeMaps(lossmaps[it], summarymap); + } + } +} + diff --git a/CycloBranch/core/cBricksDatabase.h b/CycloBranch/core/cBricksDatabase.h index 76dac2f..1f2d35e 100644 --- a/CycloBranch/core/cBricksDatabase.h +++ b/CycloBranch/core/cBricksDatabase.h @@ -67,18 +67,61 @@ class cBricksDatabase { vector bricks; + map lossorders; + + vector lossmasses; + vector losssummaries; + vector< map > lossmaps; + + void addLossToMap(string& lossstr, vector& lossids); + + double getMassFromCombCounts(vector& combcounts, vector& combmasses); + + public: + + + /** + \brief Get next combination of bricks. + \param combarray reference to an input/output vector of integers + \param numberofbasicbricks initial number of bricks in a database + \param maximumbricksincombination maximum number of combined bricks + \param maximumcumulativemass maximum cummulative mass of combined bricks + \param neutralprecursormass neutral precursor mass + \retval bool true when a valid vector is stored in combarray, false when all valid vectors were already generated + */ + bool nextCombination(vector& combarray, int numberofbasicbricks, int maximumbricksincombination, double maximumcumulativemass, double neutralprecursormass); + + + /** + \brief Get next combination of bricks. + \param combarray reference to an input/output vector of integers + \param combcounts reference to an input/output vector containing counts of elements in \a combarray + \param combmasses reference to an input vector containing masses of elements in \a combarray + \param mass sum of masses of blocks + \param numberofbasicbricks initial number of bricks in a database + \param maximumbricksincombination maximum number of combined bricks + \param maximumcumulativemass maximum cummulative mass of combined bricks + \param neutralprecursormass neutral precursor mass + \retval bool true when a valid vector is stored in combarray, false when all valid vectors were already generated + */ + bool nextCombinationFast(vector& combarray, vector& combcounts, vector& combmasses, double& mass, int numberofbasicbricks, int maximumbricksincombination, double maximumcumulativemass, double neutralprecursormass); + /** \brief Get next combination of bricks. \param combarray reference to an input/output vector of integers + \param combcounts reference to an input/output vector containing counts of elements in \a combarray + \param comblimits reference to an input vector containing maximum allowed numbers of elements in \a combarray + \param combmasses reference to an input vector containing masses of elements in \a combarray + \param mass sum of masses of blocks \param numberofbasicbricks initial number of bricks in a database \param maximumbricksincombination maximum number of combined bricks \param maximumcumulativemass maximum cummulative mass of combined bricks \param neutralprecursormass neutral precursor mass \retval bool true when a valid vector is stored in combarray, false when all valid vectors were already generated */ - bool nextCombination(vector& combarray, int numberofbasicbricks, int maximumbricksincombination, double maximumcumulativemass, double neutralprecursormass); + bool nextCombinationFastLimited(vector& combarray, vector& combcounts, vector& comblimits, vector& combmasses, double& mass, int numberofbasicbricks, int maximumbricksincombination, double maximumcumulativemass, double neutralprecursormass); /** @@ -242,6 +285,29 @@ class cBricksDatabase { bool checkKetideBlocks(cBrick& brickseries, bool regularblocksorder); + /** + \brief Get the summary mass of neutral losses. + \param lossids a vector of ids of neutral losses + \retval double mass + */ + double getMassOfNeutralLosses(vector& lossids); + + + /** + \brief Get the summary formula of neutral losses. + \param lossids a vector of ids of neutral losses + \retval string formula + */ + string getSummaryFormulaOfNeutralLosses(vector& lossids); + + + /** + \brief Get the summary map of neutral losses. + \param lossids an input vector of ids of neutral losses + \param summarymap an output map of atoms + */ + void getMapOfNeutralLosses(vector& lossids, map& summarymap); + }; diff --git a/CycloBranch/core/cCandidate.cpp b/CycloBranch/core/cCandidate.cpp index 2f13763..f1d1bcf 100644 --- a/CycloBranch/core/cCandidate.cpp +++ b/CycloBranch/core/cCandidate.cpp @@ -738,7 +738,7 @@ void cCandidate::getPermutationsOfBranches(vector& tpermutations) } -double cCandidate::calculatePrecursorMass(cBricksDatabase& brickdatabasewithcombinations, cParameters* parameters) { +double cCandidate::calculatePrecursorMassFromBricks(cBricksDatabase& brickdatabasewithcombinations, cParameters* parameters) { cBrick b; vector bricks; b.setComposition(internalcomposition, false); @@ -749,30 +749,29 @@ double cCandidate::calculatePrecursorMass(cBricksDatabase& brickdatabasewithcomb } double mass = 0; - switch (parameters->peptidetype) - { - case linear: - mass = parameters->iondefinitions[precursor_ion].massdifference + parameters->searchedmodifications[startmodifID].massdifference + parameters->searchedmodifications[endmodifID].massdifference; - break; - case cyclic: - mass = parameters->iondefinitions[cyclic_precursor_ion].massdifference; - break; - case branched: - mass = parameters->iondefinitions[precursor_ion].massdifference + parameters->searchedmodifications[startmodifID].massdifference + parameters->searchedmodifications[endmodifID].massdifference + parameters->searchedmodifications[middlemodifID].massdifference; - break; - case branchcyclic: - mass = parameters->iondefinitions[cyclic_precursor_ion].massdifference + parameters->searchedmodifications[middlemodifID].massdifference; - break; - case linearpolyketide: - // not supported because of terminal ambiguities H- -OH, H- -H, OH- -OH - break; - case cyclicpolyketide: - mass = parameters->iondefinitions[cyclic_polyketide_precursor_ion].massdifference; - break; - case other: - break; - default: - break; + switch (parameters->peptidetype) { + case linear: + mass = parameters->iondefinitions[precursor_ion].massdifference + parameters->searchedmodifications[startmodifID].massdifference + parameters->searchedmodifications[endmodifID].massdifference; + break; + case cyclic: + mass = parameters->iondefinitions[cyclic_precursor_ion].massdifference; + break; + case branched: + mass = parameters->iondefinitions[precursor_ion].massdifference + parameters->searchedmodifications[startmodifID].massdifference + parameters->searchedmodifications[endmodifID].massdifference + parameters->searchedmodifications[middlemodifID].massdifference; + break; + case branchcyclic: + mass = parameters->iondefinitions[cyclic_precursor_ion].massdifference + parameters->searchedmodifications[middlemodifID].massdifference; + break; + case linearpolyketide: + // not supported because of terminal ambiguities H- -OH, H- -H, OH- -OH + break; + case cyclicpolyketide: + mass = parameters->iondefinitions[cyclic_polyketide_precursor_ion].massdifference; + break; + case other: + break; + default: + break; } for (int i = 0; i < (int)bricks.size(); i++) { @@ -785,6 +784,7 @@ double cCandidate::calculatePrecursorMass(cBricksDatabase& brickdatabasewithcomb bool cCandidate::isEqualTo(cCandidate& candidate) { if ((internalcomposition.compare(candidate.internalcomposition) == 0) + && (name.compare(candidate.name) == 0) && (summary.getSummary().compare(candidate.summary.getSummary()) == 0) && (summary.isPartial() == candidate.summary.isPartial()) && (startmodifID == candidate.startmodifID) @@ -986,7 +986,7 @@ void cCandidate::getBranchCyclicRotations(vector& branchcyclicrotati } -cSummaryFormula cCandidate::calculateSummaryFormula(cParameters& parameters, ePeptideType peptidetype, double precursormass) { +cSummaryFormula cCandidate::calculateSummaryFormulaFromBricks(cParameters& parameters, ePeptideType peptidetype, double precursormass) { cBrick b; vector bricks; b.setComposition(internalcomposition, false); @@ -999,36 +999,35 @@ cSummaryFormula cCandidate::calculateSummaryFormula(cParameters& parameters, ePe return formula; } - switch (peptidetype) - { - case linear: - summary = "H2O"; - formula.addFormula(summary); - formula.addFormula(parameters.searchedmodifications[startmodifID].summary); - formula.addFormula(parameters.searchedmodifications[endmodifID].summary); - break; - case cyclic: - break; - case branched: - summary = "H2O"; - formula.addFormula(summary); - formula.addFormula(parameters.searchedmodifications[startmodifID].summary); - formula.addFormula(parameters.searchedmodifications[endmodifID].summary); - formula.addFormula(parameters.searchedmodifications[middlemodifID].summary); - break; - case branchcyclic: - formula.addFormula(parameters.searchedmodifications[middlemodifID].summary); - break; - case linearpolyketide: - formula.addFormula(parameters.searchedmodifications[startmodifID].summary); - formula.addFormula(parameters.searchedmodifications[endmodifID].summary); - break; - case cyclicpolyketide: - break; - case other: - break; - default: - break; + switch (peptidetype) { + case linear: + summary = "H2O"; + formula.addFormula(summary); + formula.addFormula(parameters.searchedmodifications[startmodifID].summary); + formula.addFormula(parameters.searchedmodifications[endmodifID].summary); + break; + case cyclic: + break; + case branched: + summary = "H2O"; + formula.addFormula(summary); + formula.addFormula(parameters.searchedmodifications[startmodifID].summary); + formula.addFormula(parameters.searchedmodifications[endmodifID].summary); + formula.addFormula(parameters.searchedmodifications[middlemodifID].summary); + break; + case branchcyclic: + formula.addFormula(parameters.searchedmodifications[middlemodifID].summary); + break; + case linearpolyketide: + formula.addFormula(parameters.searchedmodifications[startmodifID].summary); + formula.addFormula(parameters.searchedmodifications[endmodifID].summary); + break; + case cyclicpolyketide: + break; + case other: + break; + default: + break; } summary = parameters.precursoradduct.empty()?"":"H-1"; @@ -1309,43 +1308,45 @@ string& cCandidate::getPathAsString() { void cCandidate::setRealPeptideName(cBricksDatabase& bricksdatabase, ePeptideType peptidetype) { - switch (peptidetype) - { - case linear: - case cyclic: - case linearpolyketide: - case cyclicpolyketide: - realpeptidename = bricksdatabase.getRealName(internalcomposition); - break; - case branched: - case branchcyclic: - realpeptidename = getRealNameTComposition(bricksdatabase); - break; - case other: - default: - realpeptidename = ""; - break; + switch (peptidetype) { + case linear: + case cyclic: + case linearpolyketide: + case cyclicpolyketide: + realpeptidename = bricksdatabase.getRealName(internalcomposition); + break; + case branched: + case branchcyclic: + realpeptidename = getRealNameTComposition(bricksdatabase); + break; + case other: + realpeptidename = ""; + break; + default: + realpeptidename = ""; + break; } } void cCandidate::setAcronymPeptideNameWithHTMLReferences(cBricksDatabase& bricksdatabase, ePeptideType peptidetype) { - switch (peptidetype) - { - case linear: - case cyclic: - case linearpolyketide: - case cyclicpolyketide: - acronympeptidename = bricksdatabase.getAcronymName(internalcomposition, true); - break; - case branched: - case branchcyclic: - acronympeptidename = getAcronymsTComposition(bricksdatabase); - break; - case other: - default: - acronympeptidename = ""; - break; + switch (peptidetype) { + case linear: + case cyclic: + case linearpolyketide: + case cyclicpolyketide: + acronympeptidename = bricksdatabase.getAcronymName(internalcomposition, true); + break; + case branched: + case branchcyclic: + acronympeptidename = getAcronymsTComposition(bricksdatabase); + break; + case other: + acronympeptidename = ""; + break; + default: + acronympeptidename = ""; + break; } } diff --git a/CycloBranch/core/cCandidate.h b/CycloBranch/core/cCandidate.h index 623085e..ad51c2b 100644 --- a/CycloBranch/core/cCandidate.h +++ b/CycloBranch/core/cCandidate.h @@ -313,12 +313,12 @@ class cCandidate { /** - \brief Calculate the precursor mass of the peptide sequence candidate. + \brief Calculate the precursor mass of the peptide sequence candidate from bricks. \param brickdatabasewithcombinations reference to an input database of bricks with combinations of bricks \param parameters a pointer to the parameters of the application \retval double precursor mass of the candidate */ - double calculatePrecursorMass(cBricksDatabase& brickdatabasewithcombinations, cParameters* parameters); + double calculatePrecursorMassFromBricks(cBricksDatabase& brickdatabasewithcombinations, cParameters* parameters); /** @@ -457,7 +457,7 @@ class cCandidate { \param precursormass experimantal precursor mass \retval string summary formula */ - cSummaryFormula calculateSummaryFormula(cParameters& parameters, ePeptideType peptidetype, double precursormass = 0); + cSummaryFormula calculateSummaryFormulaFromBricks(cParameters& parameters, ePeptideType peptidetype, double precursormass = 0); /** diff --git a/CycloBranch/core/cDeNovoGraph.cpp b/CycloBranch/core/cDeNovoGraph.cpp index b10b76a..8d83a8c 100644 --- a/CycloBranch/core/cDeNovoGraph.cpp +++ b/CycloBranch/core/cDeNovoGraph.cpp @@ -178,471 +178,470 @@ int cDeNovoGraph::createGraph(bool& terminatecomputation) { string negativeshiftsummary = (parameters->precursorcharge > 0)?"":"H-2+-2"; // insert system nodes - switch (parameters->peptidetype) - { - case cyclic: - node.clear(); - node.setMZRatio(0); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 1; - edge.targetion = b_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - lastsystemnode = (int)graph.size() - 1; - startnode = 1; - break; - case linear: - case branched: - node.clear(); - node.setMZRatio(0); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - node.addIonAnnotation(y_ion); - graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(y_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 1; - edge.targetion = b_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 2; - edge.targetion = y_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - targetnode = 2; - - for (i = 1; i < (int)parameters->searchedmodifications.size(); i++) { + switch (parameters->peptidetype) { + case cyclic: + node.clear(); + node.setMZRatio(0); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 1; + edge.targetion = b_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + lastsystemnode = (int)graph.size() - 1; + startnode = 1; + break; + case linear: + case branched: + node.clear(); + node.setMZRatio(0); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + node.addIonAnnotation(y_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(y_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 1; + edge.targetion = b_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 2; + edge.targetion = y_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + targetnode = 2; + + for (i = 1; i < (int)parameters->searchedmodifications.size(); i++) { - if (parameters->searchedmodifications[i].nterminal) { - node.clear(); - node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = b_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); + if (parameters->searchedmodifications[i].nterminal) { + node.clear(); + node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = b_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - } - - if (parameters->searchedmodifications[i].cterminal) { - node.clear(); - node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(y_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = y_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - - graph[0].insertTempEdge(edge); - } - - } + graph[0].insertTempEdge(edge); + } - lastsystemnode = (int)graph.size() - 1; - startnode = 1; - break; - case branchcyclic: - node.clear(); - node.setMZRatio(0); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - //node.addIonAnnotation(y_ion); - graph.push_back(node); + if (parameters->searchedmodifications[i].cterminal) { + node.clear(); + node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(y_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = y_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + + graph[0].insertTempEdge(edge); + } - node.clear(); - node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - graph.push_back(node); + } - //node.clear(); - //node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + negativeshift); - //node.setIntensity(0); - //node.addIonAnnotation(y_ion); - //graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 1; - edge.targetion = b_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - //edge.clear(); - //edge.composition = "0"; - //tmpformula.clear(); - //tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); - //tmpformula.addFormula(negativeshiftsummary); - //edge.summary = tmpformula.getSummary(); - //edge.targetnode = 2; - //edge.targetion = y_ion; - //edge.massdifference = graph[edge.targetnode].getMZRatio(); - //graph[0].insertTempEdge(edge); - - /* + lastsystemnode = (int)graph.size() - 1; + startnode = 1; + break; + case branchcyclic: + node.clear(); + node.setMZRatio(0); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + //node.addIonAnnotation(y_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + graph.push_back(node); + + //node.clear(); + //node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + negativeshift); + //node.setIntensity(0); + //node.addIonAnnotation(y_ion); + //graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 1; + edge.targetion = b_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + //edge.clear(); + //edge.composition = "0"; + //tmpformula.clear(); + //tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); + //tmpformula.addFormula(negativeshiftsummary); + //edge.summary = tmpformula.getSummary(); + //edge.targetnode = 2; + //edge.targetion = y_ion; + //edge.massdifference = graph[edge.targetnode].getMZRatio(); + //graph[0].insertTempEdge(edge); + + /* - targetnode = 2; - - for (i = 1; i < (int)parameters->searchedmodifications.size(); i++) { - - if (parameters->searchedmodifications[i].nterminal) { - node.clear(); - node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(b_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = b_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); + targetnode = 2; + + for (i = 1; i < (int)parameters->searchedmodifications.size(); i++) { + + if (parameters->searchedmodifications[i].nterminal) { + node.clear(); + node.setMZRatio(parameters->iondefinitions[b_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(b_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[b_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = b_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - } - - if (parameters->searchedmodifications[i].cterminal) { - node.clear(); - node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(y_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = y_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - - graph[0].insertTempEdge(edge); - } - - } - */ - - lastsystemnode = (int)graph.size() - 1; - startnode = 1; - break; - case linearpolyketide: - node.clear(); - node.setMZRatio(0); - node.setIntensity(0); - node.addIonAnnotation(l1h_ion); - node.addIonAnnotation(l2h_ion); - node.addIonAnnotation(l1oh_ion); - node.addIonAnnotation(l2oh_ion); - graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[l1h_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l1h_ion); - graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[l2h_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l2h_ion); - graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[l1oh_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l1oh_ion); - graph.push_back(node); + graph[0].insertTempEdge(edge); + } - node.clear(); - node.setMZRatio(parameters->iondefinitions[l2oh_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l2oh_ion); - graph.push_back(node); + if (parameters->searchedmodifications[i].cterminal) { + node.clear(); + node.setMZRatio(parameters->iondefinitions[y_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(y_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[y_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = y_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + + graph[0].insertTempEdge(edge); + } - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l1h_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 1; - edge.targetion = l1h_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l2h_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 2; - edge.targetion = l2h_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l1oh_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 3; - edge.targetion = l1oh_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l2oh_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 4; - edge.targetion = l2oh_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - targetnode = 4; - - for (i = 1; i < (int)parameters->searchedmodifications.size(); i++) { - - if (parameters->searchedmodifications[i].nterminal) { - node.clear(); - node.setMZRatio(parameters->iondefinitions[l1h_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l1h_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l1h_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = l1h_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - - graph[0].insertTempEdge(edge); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[l2h_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l2h_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l2h_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = l2h_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - - graph[0].insertTempEdge(edge); } + */ + + lastsystemnode = (int)graph.size() - 1; + startnode = 1; + break; + case linearpolyketide: + node.clear(); + node.setMZRatio(0); + node.setIntensity(0); + node.addIonAnnotation(l1h_ion); + node.addIonAnnotation(l2h_ion); + node.addIonAnnotation(l1oh_ion); + node.addIonAnnotation(l2oh_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l1h_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l1h_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l2h_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l2h_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l1oh_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l1oh_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l2oh_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l2oh_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l1h_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 1; + edge.targetion = l1h_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l2h_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 2; + edge.targetion = l2h_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l1oh_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 3; + edge.targetion = l1oh_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l2oh_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 4; + edge.targetion = l2oh_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + targetnode = 4; + + for (i = 1; i < (int)parameters->searchedmodifications.size(); i++) { + + if (parameters->searchedmodifications[i].nterminal) { + node.clear(); + node.setMZRatio(parameters->iondefinitions[l1h_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l1h_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l1h_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = l1h_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + + graph[0].insertTempEdge(edge); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l2h_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l2h_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l2h_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = l2h_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + + graph[0].insertTempEdge(edge); + } - if (parameters->searchedmodifications[i].cterminal) { - node.clear(); - node.setMZRatio(parameters->iondefinitions[l1oh_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l1oh_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l1oh_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = l1oh_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - - graph[0].insertTempEdge(edge); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[l2oh_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l2oh_ion); - graph.push_back(node); - - edge.clear(); - edge.composition = "0"; - edge.startmodifID = i; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l2oh_ion].summary); - tmpformula.addFormula(parameters->searchedmodifications[i].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - targetnode++; - edge.targetnode = targetnode; - edge.targetion = l2oh_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - - graph[0].insertTempEdge(edge); - } + if (parameters->searchedmodifications[i].cterminal) { + node.clear(); + node.setMZRatio(parameters->iondefinitions[l1oh_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l1oh_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l1oh_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = l1oh_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + + graph[0].insertTempEdge(edge); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l2oh_ion].massdifference + parameters->searchedmodifications[i].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l2oh_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + edge.startmodifID = i; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l2oh_ion].summary); + tmpformula.addFormula(parameters->searchedmodifications[i].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + targetnode++; + edge.targetnode = targetnode; + edge.targetion = l2oh_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + + graph[0].insertTempEdge(edge); + } - } - - lastsystemnode = (int)graph.size() - 1; - startnode = 1; - break; - case cyclicpolyketide: - node.clear(); - node.setMZRatio(0); - node.setIntensity(0); - //node.addIonAnnotation(l0h_ion); - node.addIonAnnotation(l1h_ion); - node.addIonAnnotation(l2h_ion); - graph.push_back(node); - - //node.clear(); - //node.setMZRatio(parameters->iondefinitions[l0h_ion].massdifference + negativeshift); - //node.setIntensity(0); - //node.addIonAnnotation(l0h_ion); - //graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[l1h_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l1h_ion); - graph.push_back(node); - - node.clear(); - node.setMZRatio(parameters->iondefinitions[l2h_ion].massdifference + negativeshift); - node.setIntensity(0); - node.addIonAnnotation(l2h_ion); - graph.push_back(node); + } - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l1h_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 1; - edge.targetion = l1h_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - edge.clear(); - edge.composition = "0"; - tmpformula.clear(); - tmpformula.addFormula(parameters->iondefinitions[l2h_ion].summary); - tmpformula.addFormula(negativeshiftsummary); - edge.summary = tmpformula.getSummary(); - edge.targetnode = 2; - edge.targetion = l2h_ion; - edge.massdifference = graph[edge.targetnode].getMZRatio(); - graph[0].insertTempEdge(edge); - - /*edge.clear(); - edge.composition = "0"; - edge.targetnode = 3; - graph[0].insertTempEdge(e);*/ - - lastsystemnode = (int)graph.size() - 1; - startnode = 1; - break; - case other: - *os << "Invalid peptide type 'Other'." << endl; - return -1; - default: - *os << "Undefined peptide type." << endl; - return -1; + lastsystemnode = (int)graph.size() - 1; + startnode = 1; + break; + case cyclicpolyketide: + node.clear(); + node.setMZRatio(0); + node.setIntensity(0); + //node.addIonAnnotation(l0h_ion); + node.addIonAnnotation(l1h_ion); + node.addIonAnnotation(l2h_ion); + graph.push_back(node); + + //node.clear(); + //node.setMZRatio(parameters->iondefinitions[l0h_ion].massdifference + negativeshift); + //node.setIntensity(0); + //node.addIonAnnotation(l0h_ion); + //graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l1h_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l1h_ion); + graph.push_back(node); + + node.clear(); + node.setMZRatio(parameters->iondefinitions[l2h_ion].massdifference + negativeshift); + node.setIntensity(0); + node.addIonAnnotation(l2h_ion); + graph.push_back(node); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l1h_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 1; + edge.targetion = l1h_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + edge.clear(); + edge.composition = "0"; + tmpformula.clear(); + tmpformula.addFormula(parameters->iondefinitions[l2h_ion].summary); + tmpformula.addFormula(negativeshiftsummary); + edge.summary = tmpformula.getSummary(); + edge.targetnode = 2; + edge.targetion = l2h_ion; + edge.massdifference = graph[edge.targetnode].getMZRatio(); + graph[0].insertTempEdge(edge); + + /*edge.clear(); + edge.composition = "0"; + edge.targetnode = 3; + graph[0].insertTempEdge(e);*/ + + lastsystemnode = (int)graph.size() - 1; + startnode = 1; + break; + case other: + *os << "Invalid peptide type 'Other'." << endl; + return -1; + default: + *os << "Undefined peptide type." << endl; + return -1; } // sort(graph.begin() + startnode, graph.end(), compareNodes); diff --git a/CycloBranch/core/cFragmentIons.cpp b/CycloBranch/core/cFragmentIons.cpp index 8808182..772229a 100644 --- a/CycloBranch/core/cFragmentIons.cpp +++ b/CycloBranch/core/cFragmentIons.cpp @@ -172,7 +172,7 @@ cIsotopeMap::cIsotopeMap() { ismap["H"] = is; is.mass = H2; is.probability = Pr_H2; - ismap["2H"] = is; + ismap["2H"] = is; table["H"] = ismap; ismap.clear(); @@ -190,7 +190,7 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = He3; is.probability = Pr_He3; - ismap["3He"] = is; + ismap["3He"] = is; is.mass = He4; is.probability = Pr_He4; ismap["He"] = is; @@ -199,7 +199,7 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Li6; is.probability = Pr_Li6; - ismap["6Li"] = is; + ismap["6Li"] = is; is.mass = Li7; is.probability = Pr_Li7; ismap["Li"] = is; @@ -214,7 +214,7 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = B10; is.probability = Pr_B10; - ismap["10B"] = is; + ismap["10B"] = is; is.mass = B11; is.probability = Pr_B11; ismap["B"] = is; @@ -226,7 +226,7 @@ cIsotopeMap::cIsotopeMap() { ismap["C"] = is; is.mass = C13; is.probability = Pr_C13; - ismap["13C"] = is; + ismap["13C"] = is; table["C"] = ismap; ismap.clear(); @@ -235,7 +235,7 @@ cIsotopeMap::cIsotopeMap() { ismap["N"] = is; is.mass = N15; is.probability = Pr_N15; - ismap["15N"] = is; + ismap["15N"] = is; table["N"] = ismap; ismap.clear(); @@ -244,10 +244,10 @@ cIsotopeMap::cIsotopeMap() { ismap["O"] = is; is.mass = O17; is.probability = Pr_O17; - ismap["17O"] = is; + ismap["17O"] = is; is.mass = O18; is.probability = Pr_O18; - ismap["18O"] = is; + ismap["18O"] = is; table["O"] = ismap; ismap.clear(); @@ -262,10 +262,10 @@ cIsotopeMap::cIsotopeMap() { ismap["Ne"] = is; is.mass = Ne21; is.probability = Pr_Ne21; - ismap["21Ne"] = is; + ismap["21Ne"] = is; is.mass = Ne22; is.probability = Pr_Ne22; - ismap["22Ne"] = is; + ismap["22Ne"] = is; table["Ne"] = ismap; ismap.clear(); @@ -280,10 +280,10 @@ cIsotopeMap::cIsotopeMap() { ismap["Mg"] = is; is.mass = Mg25; is.probability = Pr_Mg25; - ismap["25Mg"] = is; + ismap["25Mg"] = is; is.mass = Mg26; is.probability = Pr_Mg26; - ismap["26Mg"] = is; + ismap["26Mg"] = is; table["Mg"] = ismap; ismap.clear(); @@ -298,10 +298,10 @@ cIsotopeMap::cIsotopeMap() { ismap["Si"] = is; is.mass = Si29; is.probability = Pr_Si29; - ismap["29Si"] = is; + ismap["29Si"] = is; is.mass = Si30; is.probability = Pr_Si30; - ismap["30Si"] = is; + ismap["30Si"] = is; table["Si"] = ismap; ismap.clear(); @@ -316,13 +316,13 @@ cIsotopeMap::cIsotopeMap() { ismap["S"] = is; is.mass = S33; is.probability = Pr_S33; - ismap["33S"] = is; + ismap["33S"] = is; is.mass = S34; is.probability = Pr_S34; - ismap["34S"] = is; + ismap["34S"] = is; is.mass = S36; is.probability = Pr_S36; - ismap["36S"] = is; + ismap["36S"] = is; table["S"] = ismap; ismap.clear(); @@ -331,16 +331,16 @@ cIsotopeMap::cIsotopeMap() { ismap["Cl"] = is; is.mass = Cl37; is.probability = Pr_Cl37; - ismap["37Cl"] = is; + ismap["37Cl"] = is; table["Cl"] = ismap; ismap.clear(); is.mass = Ar36; is.probability = Pr_Ar36; - ismap["36Ar"] = is; + ismap["36Ar"] = is; is.mass = Ar38; is.probability = Pr_Ar38; - ismap["38Ar"] = is; + ismap["38Ar"] = is; is.mass = Ar40; is.probability = Pr_Ar40; ismap["Ar"] = is; @@ -352,10 +352,10 @@ cIsotopeMap::cIsotopeMap() { ismap["K"] = is; is.mass = K40; is.probability = Pr_K40; - ismap["40K"] = is; + ismap["40K"] = is; is.mass = K41; is.probability = Pr_K41; - ismap["41K"] = is; + ismap["41K"] = is; table["K"] = ismap; ismap.clear(); @@ -364,19 +364,19 @@ cIsotopeMap::cIsotopeMap() { ismap["Ca"] = is; is.mass = Ca42; is.probability = Pr_Ca42; - ismap["42Ca"] = is; + ismap["42Ca"] = is; is.mass = Ca43; is.probability = Pr_Ca43; - ismap["43Ca"] = is; + ismap["43Ca"] = is; is.mass = Ca44; is.probability = Pr_Ca44; - ismap["44Ca"] = is; + ismap["44Ca"] = is; is.mass = Ca46; is.probability = Pr_Ca46; - ismap["46Ca"] = is; + ismap["46Ca"] = is; is.mass = Ca48; is.probability = Pr_Ca48; - ismap["48Ca"] = is; + ismap["48Ca"] = is; table["Ca"] = ismap; ismap.clear(); @@ -388,25 +388,25 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Ti46; is.probability = Pr_Ti46; - ismap["46Ti"] = is; + ismap["46Ti"] = is; is.mass = Ti47; is.probability = Pr_Ti47; - ismap["47Ti"] = is; + ismap["47Ti"] = is; is.mass = Ti48; is.probability = Pr_Ti48; ismap["Ti"] = is; is.mass = Ti49; is.probability = Pr_Ti49; - ismap["49Ti"] = is; + ismap["49Ti"] = is; is.mass = Ti50; is.probability = Pr_Ti50; - ismap["50Ti"] = is; + ismap["50Ti"] = is; table["Ti"] = ismap; ismap.clear(); is.mass = V50; is.probability = Pr_V50; - ismap["50V"] = is; + ismap["50V"] = is; is.mass = V51; is.probability = Pr_V51; ismap["V"] = is; @@ -415,16 +415,16 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Cr50; is.probability = Pr_Cr50; - ismap["50Cr"] = is; + ismap["50Cr"] = is; is.mass = Cr52; is.probability = Pr_Cr52; ismap["Cr"] = is; is.mass = Cr53; is.probability = Pr_Cr53; - ismap["53Cr"] = is; + ismap["53Cr"] = is; is.mass = Cr54; is.probability = Pr_Cr54; - ismap["54Cr"] = is; + ismap["54Cr"] = is; table["Cr"] = ismap; ismap.clear(); @@ -436,16 +436,16 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Fe54; is.probability = Pr_Fe54; - ismap["54Fe"] = is; + ismap["54Fe"] = is; is.mass = Fe56; is.probability = Pr_Fe56; ismap["Fe"] = is; is.mass = Fe57; is.probability = Pr_Fe57; - ismap["57Fe"] = is; + ismap["57Fe"] = is; is.mass = Fe58; is.probability = Pr_Fe58; - ismap["58Fe"] = is; + ismap["58Fe"] = is; table["Fe"] = ismap; ismap.clear(); @@ -460,16 +460,16 @@ cIsotopeMap::cIsotopeMap() { ismap["Ni"] = is; is.mass = Ni60; is.probability = Pr_Ni60; - ismap["60Ni"] = is; + ismap["60Ni"] = is; is.mass = Ni61; is.probability = Pr_Ni61; - ismap["61Ni"] = is; + ismap["61Ni"] = is; is.mass = Ni62; is.probability = Pr_Ni62; - ismap["62Ni"] = is; + ismap["62Ni"] = is; is.mass = Ni64; is.probability = Pr_Ni64; - ismap["64Ni"] = is; + ismap["64Ni"] = is; table["Ni"] = ismap; ismap.clear(); @@ -478,7 +478,7 @@ cIsotopeMap::cIsotopeMap() { ismap["Cu"] = is; is.mass = Cu65; is.probability = Pr_Cu65; - ismap["65Cu"] = is; + ismap["65Cu"] = is; table["Cu"] = ismap; ismap.clear(); @@ -487,16 +487,16 @@ cIsotopeMap::cIsotopeMap() { ismap["Zn"] = is; is.mass = Zn66; is.probability = Pr_Zn66; - ismap["66Zn"] = is; + ismap["66Zn"] = is; is.mass = Zn67; is.probability = Pr_Zn67; - ismap["67Zn"] = is; + ismap["67Zn"] = is; is.mass = Zn68; is.probability = Pr_Zn68; - ismap["68Zn"] = is; + ismap["68Zn"] = is; is.mass = Zn70; is.probability = Pr_Zn70; - ismap["70Zn"] = is; + ismap["70Zn"] = is; table["Zn"] = ismap; ismap.clear(); @@ -505,25 +505,25 @@ cIsotopeMap::cIsotopeMap() { ismap["Ga"] = is; is.mass = Ga71; is.probability = Pr_Ga71; - ismap["71Ga"] = is; + ismap["71Ga"] = is; table["Ga"] = ismap; ismap.clear(); is.mass = Ge70; is.probability = Pr_Ge70; - ismap["70Ge"] = is; + ismap["70Ge"] = is; is.mass = Ge72; is.probability = Pr_Ge72; - ismap["72Ge"] = is; + ismap["72Ge"] = is; is.mass = Ge73; is.probability = Pr_Ge73; - ismap["73Ge"] = is; + ismap["73Ge"] = is; is.mass = Ge74; is.probability = Pr_Ge74; ismap["Ge"] = is; is.mass = Ge76; is.probability = Pr_Ge76; - ismap["76Ge"] = is; + ismap["76Ge"] = is; table["Ge"] = ismap; ismap.clear(); @@ -535,22 +535,22 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Se74; is.probability = Pr_Se74; - ismap["74Se"] = is; + ismap["74Se"] = is; is.mass = Se76; is.probability = Pr_Se76; - ismap["76Se"] = is; + ismap["76Se"] = is; is.mass = Se77; is.probability = Pr_Se77; - ismap["77Se"] = is; + ismap["77Se"] = is; is.mass = Se78; is.probability = Pr_Se78; - ismap["78Se"] = is; + ismap["78Se"] = is; is.mass = Se80; is.probability = Pr_Se80; ismap["Se"] = is; is.mass = Se82; is.probability = Pr_Se82; - ismap["82Se"] = is; + ismap["82Se"] = is; table["Se"] = ismap; ismap.clear(); @@ -559,28 +559,28 @@ cIsotopeMap::cIsotopeMap() { ismap["Br"] = is; is.mass = Br81; is.probability = Pr_Br81; - ismap["81Br"] = is; + ismap["81Br"] = is; table["Br"] = ismap; ismap.clear(); is.mass = Kr78; is.probability = Pr_Kr78; - ismap["78Kr"] = is; + ismap["78Kr"] = is; is.mass = Kr80; is.probability = Pr_Kr80; - ismap["80Kr"] = is; + ismap["80Kr"] = is; is.mass = Kr82; is.probability = Pr_Kr82; - ismap["82Kr"] = is; + ismap["82Kr"] = is; is.mass = Kr83; is.probability = Pr_Kr83; - ismap["83Kr"] = is; + ismap["83Kr"] = is; is.mass = Kr84; is.probability = Pr_Kr84; ismap["Kr"] = is; is.mass = Kr86; is.probability = Pr_Kr86; - ismap["86Kr"] = is; + ismap["86Kr"] = is; table["Kr"] = ismap; ismap.clear(); @@ -589,19 +589,19 @@ cIsotopeMap::cIsotopeMap() { ismap["Rb"] = is; is.mass = Rb87; is.probability = Pr_Rb87; - ismap["87Rb"] = is; + ismap["87Rb"] = is; table["Rb"] = ismap; ismap.clear(); is.mass = Sr84; is.probability = Pr_Sr84; - ismap["84Sr"] = is; + ismap["84Sr"] = is; is.mass = Sr86; is.probability = Pr_Sr86; - ismap["86Sr"] = is; + ismap["86Sr"] = is; is.mass = Sr87; is.probability = Pr_Sr87; - ismap["87Sr"] = is; + ismap["87Sr"] = is; is.mass = Sr88; is.probability = Pr_Sr88; ismap["Sr"] = is; @@ -619,16 +619,16 @@ cIsotopeMap::cIsotopeMap() { ismap["Zr"] = is; is.mass = Zr91; is.probability = Pr_Zr91; - ismap["91Zr"] = is; + ismap["91Zr"] = is; is.mass = Zr92; is.probability = Pr_Zr92; - ismap["92Zr"] = is; + ismap["92Zr"] = is; is.mass = Zr94; is.probability = Pr_Zr94; - ismap["94Zr"] = is; + ismap["94Zr"] = is; is.mass = Zr96; is.probability = Pr_Zr96; - ismap["96Zr"] = is; + ismap["96Zr"] = is; table["Zr"] = ismap; ismap.clear(); @@ -640,25 +640,25 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Mo92; is.probability = Pr_Mo92; - ismap["92Mo"] = is; + ismap["92Mo"] = is; is.mass = Mo94; is.probability = Pr_Mo94; - ismap["94Mo"] = is; + ismap["94Mo"] = is; is.mass = Mo95; is.probability = Pr_Mo95; - ismap["95Mo"] = is; + ismap["95Mo"] = is; is.mass = Mo96; is.probability = Pr_Mo96; - ismap["96Mo"] = is; + ismap["96Mo"] = is; is.mass = Mo97; is.probability = Pr_Mo97; - ismap["97Mo"] = is; + ismap["97Mo"] = is; is.mass = Mo98; is.probability = Pr_Mo98; ismap["Mo"] = is; is.mass = Mo100; is.probability = Pr_Mo100; - ismap["100Mo"] = is; + ismap["100Mo"] = is; table["Mo"] = ismap; ismap.clear(); @@ -670,25 +670,25 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Ru96; is.probability = Pr_Ru96; - ismap["96Ru"] = is; + ismap["96Ru"] = is; is.mass = Ru98; is.probability = Pr_Ru98; - ismap["98Ru"] = is; + ismap["98Ru"] = is; is.mass = Ru99; is.probability = Pr_Ru99; - ismap["99Ru"] = is; + ismap["99Ru"] = is; is.mass = Ru100; is.probability = Pr_Ru100; - ismap["100Ru"] = is; + ismap["100Ru"] = is; is.mass = Ru101; is.probability = Pr_Ru101; - ismap["101Ru"] = is; + ismap["101Ru"] = is; is.mass = Ru102; is.probability = Pr_Ru102; ismap["Ru"] = is; is.mass = Ru104; is.probability = Pr_Ru104; - ismap["104Ru"] = is; + ismap["104Ru"] = is; table["Ru"] = ismap; ismap.clear(); @@ -700,22 +700,22 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Pd102; is.probability = Pr_Pd102; - ismap["102Pd"] = is; + ismap["102Pd"] = is; is.mass = Pd104; is.probability = Pr_Pd104; - ismap["104Pd"] = is; + ismap["104Pd"] = is; is.mass = Pd105; is.probability = Pr_Pd105; - ismap["105Pd"] = is; + ismap["105Pd"] = is; is.mass = Pd106; is.probability = Pr_Pd106; ismap["Pd"] = is; is.mass = Pd108; is.probability = Pr_Pd108; - ismap["108Pd"] = is; + ismap["108Pd"] = is; is.mass = Pd110; is.probability = Pr_Pd110; - ismap["110Pd"] = is; + ismap["110Pd"] = is; table["Pd"] = ismap; ismap.clear(); @@ -724,40 +724,40 @@ cIsotopeMap::cIsotopeMap() { ismap["Ag"] = is; is.mass = Ag109; is.probability = Pr_Ag109; - ismap["109Ag"] = is; + ismap["109Ag"] = is; table["Ag"] = ismap; ismap.clear(); is.mass = Cd106; is.probability = Pr_Cd106; - ismap["106Cd"] = is; + ismap["106Cd"] = is; is.mass = Cd108; is.probability = Pr_Cd108; - ismap["108Cd"] = is; + ismap["108Cd"] = is; is.mass = Cd110; is.probability = Pr_Cd110; - ismap["110Cd"] = is; + ismap["110Cd"] = is; is.mass = Cd111; is.probability = Pr_Cd111; - ismap["111Cd"] = is; + ismap["111Cd"] = is; is.mass = Cd112; is.probability = Pr_Cd112; - ismap["112Cd"] = is; + ismap["112Cd"] = is; is.mass = Cd113; is.probability = Pr_Cd113; - ismap["113Cd"] = is; + ismap["113Cd"] = is; is.mass = Cd114; is.probability = Pr_Cd114; ismap["Cd"] = is; is.mass = Cd116; is.probability = Pr_Cd116; - ismap["116Cd"] = is; + ismap["116Cd"] = is; table["Cd"] = ismap; ismap.clear(); is.mass = In113; is.probability = Pr_In113; - ismap["113In"] = is; + ismap["113In"] = is; is.mass = In115; is.probability = Pr_In115; ismap["In"] = is; @@ -766,34 +766,34 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Sn112; is.probability = Pr_Sn112; - ismap["112Sn"] = is; + ismap["112Sn"] = is; is.mass = Sn114; is.probability = Pr_Sn114; - ismap["114Sn"] = is; + ismap["114Sn"] = is; is.mass = Sn115; is.probability = Pr_Sn115; - ismap["115Sn"] = is; + ismap["115Sn"] = is; is.mass = Sn116; is.probability = Pr_Sn116; - ismap["116Sn"] = is; + ismap["116Sn"] = is; is.mass = Sn117; is.probability = Pr_Sn117; - ismap["117Sn"] = is; + ismap["117Sn"] = is; is.mass = Sn118; is.probability = Pr_Sn118; - ismap["118Sn"] = is; + ismap["118Sn"] = is; is.mass = Sn119; is.probability = Pr_Sn119; - ismap["119Sn"] = is; + ismap["119Sn"] = is; is.mass = Sn120; is.probability = Pr_Sn120; ismap["Sn"] = is; is.mass = Sn122; is.probability = Pr_Sn122; - ismap["122Sn"] = is; + ismap["122Sn"] = is; is.mass = Sn124; is.probability = Pr_Sn124; - ismap["124Sn"] = is; + ismap["124Sn"] = is; table["Sn"] = ismap; ismap.clear(); @@ -802,31 +802,31 @@ cIsotopeMap::cIsotopeMap() { ismap["Sb"] = is; is.mass = Sb123; is.probability = Pr_Sb123; - ismap["123Sb"] = is; + ismap["123Sb"] = is; table["Sb"] = ismap; ismap.clear(); is.mass = Te120; is.probability = Pr_Te120; - ismap["120Te"] = is; + ismap["120Te"] = is; is.mass = Te122; is.probability = Pr_Te122; - ismap["122Te"] = is; + ismap["122Te"] = is; is.mass = Te123; is.probability = Pr_Te123; - ismap["123Te"] = is; + ismap["123Te"] = is; is.mass = Te124; is.probability = Pr_Te124; - ismap["124Te"] = is; + ismap["124Te"] = is; is.mass = Te125; is.probability = Pr_Te125; - ismap["125Te"] = is; + ismap["125Te"] = is; is.mass = Te126; is.probability = Pr_Te126; - ismap["126Te"] = is; + ismap["126Te"] = is; is.mass = Te128; is.probability = Pr_Te128; - ismap["128Te"] = is; + ismap["128Te"] = is; is.mass = Te130; is.probability = Pr_Te130; ismap["Te"] = is; @@ -841,31 +841,31 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Xe124; is.probability = Pr_Xe124; - ismap["124Xe"] = is; + ismap["124Xe"] = is; is.mass = Xe126; is.probability = Pr_Xe126; - ismap["126Xe"] = is; + ismap["126Xe"] = is; is.mass = Xe128; is.probability = Pr_Xe128; - ismap["128Xe"] = is; + ismap["128Xe"] = is; is.mass = Xe129; is.probability = Pr_Xe129; - ismap["129Xe"] = is; + ismap["129Xe"] = is; is.mass = Xe130; is.probability = Pr_Xe130; - ismap["130Xe"] = is; + ismap["130Xe"] = is; is.mass = Xe131; is.probability = Pr_Xe131; - ismap["131Xe"] = is; + ismap["131Xe"] = is; is.mass = Xe132; is.probability = Pr_Xe132; ismap["Xe"] = is; is.mass = Xe134; is.probability = Pr_Xe134; - ismap["134Xe"] = is; + ismap["134Xe"] = is; is.mass = Xe136; is.probability = Pr_Xe136; - ismap["136Xe"] = is; + ismap["136Xe"] = is; table["Xe"] = ismap; ismap.clear(); @@ -877,22 +877,22 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Ba130; is.probability = Pr_Ba130; - ismap["130Ba"] = is; + ismap["130Ba"] = is; is.mass = Ba132; is.probability = Pr_Ba132; - ismap["132Ba"] = is; + ismap["132Ba"] = is; is.mass = Ba134; is.probability = Pr_Ba134; - ismap["134Ba"] = is; + ismap["134Ba"] = is; is.mass = Ba135; is.probability = Pr_Ba135; - ismap["135Ba"] = is; + ismap["135Ba"] = is; is.mass = Ba136; is.probability = Pr_Ba136; - ismap["136Ba"] = is; + ismap["136Ba"] = is; is.mass = Ba137; is.probability = Pr_Ba137; - ismap["137Ba"] = is; + ismap["137Ba"] = is; is.mass = Ba138; is.probability = Pr_Ba138; ismap["Ba"] = is; @@ -901,7 +901,7 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = La138; is.probability = Pr_La138; - ismap["138La"] = is; + ismap["138La"] = is; is.mass = La139; is.probability = Pr_La139; ismap["La"] = is; @@ -910,16 +910,16 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Ce136; is.probability = Pr_Ce136; - ismap["136Ce"] = is; + ismap["136Ce"] = is; is.mass = Ce138; is.probability = Pr_Ce138; - ismap["138Ce"] = is; + ismap["138Ce"] = is; is.mass = Ce140; is.probability = Pr_Ce140; ismap["Ce"] = is; is.mass = Ce142; is.probability = Pr_Ce142; - ismap["142Ce"] = is; + ismap["142Ce"] = is; table["Ce"] = ismap; ismap.clear(); @@ -934,22 +934,22 @@ cIsotopeMap::cIsotopeMap() { ismap["Nd"] = is; is.mass = Nd143; is.probability = Pr_Nd143; - ismap["143Nd"] = is; + ismap["143Nd"] = is; is.mass = Nd144; is.probability = Pr_Nd144; - ismap["144Nd"] = is; + ismap["144Nd"] = is; is.mass = Nd145; is.probability = Pr_Nd145; - ismap["145Nd"] = is; + ismap["145Nd"] = is; is.mass = Nd146; is.probability = Pr_Nd146; - ismap["146Nd"] = is; + ismap["146Nd"] = is; is.mass = Nd148; is.probability = Pr_Nd148; - ismap["148Nd"] = is; + ismap["148Nd"] = is; is.mass = Nd150; is.probability = Pr_Nd150; - ismap["150Nd"] = is; + ismap["150Nd"] = is; table["Nd"] = ismap; ismap.clear(); @@ -961,31 +961,31 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Sm144; is.probability = Pr_Sm144; - ismap["144Sm"] = is; + ismap["144Sm"] = is; is.mass = Sm147; is.probability = Pr_Sm147; - ismap["147Sm"] = is; + ismap["147Sm"] = is; is.mass = Sm148; is.probability = Pr_Sm148; - ismap["148Sm"] = is; + ismap["148Sm"] = is; is.mass = Sm149; is.probability = Pr_Sm149; - ismap["149Sm"] = is; + ismap["149Sm"] = is; is.mass = Sm150; is.probability = Pr_Sm150; - ismap["150Sm"] = is; + ismap["150Sm"] = is; is.mass = Sm152; is.probability = Pr_Sm152; ismap["Sm"] = is; is.mass = Sm154; is.probability = Pr_Sm154; - ismap["154Sm"] = is; + ismap["154Sm"] = is; table["Sm"] = ismap; ismap.clear(); is.mass = Eu151; is.probability = Pr_Eu151; - ismap["151Eu"] = is; + ismap["151Eu"] = is; is.mass = Eu153; is.probability = Pr_Eu153; ismap["Eu"] = is; @@ -994,25 +994,25 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Gd152; is.probability = Pr_Gd152; - ismap["152Gd"] = is; + ismap["152Gd"] = is; is.mass = Gd154; is.probability = Pr_Gd154; - ismap["154Gd"] = is; + ismap["154Gd"] = is; is.mass = Gd155; is.probability = Pr_Gd155; - ismap["155Gd"] = is; + ismap["155Gd"] = is; is.mass = Gd156; is.probability = Pr_Gd156; - ismap["156Gd"] = is; + ismap["156Gd"] = is; is.mass = Gd157; is.probability = Pr_Gd157; - ismap["157Gd"] = is; + ismap["157Gd"] = is; is.mass = Gd158; is.probability = Pr_Gd158; ismap["Gd"] = is; is.mass = Gd160; is.probability = Pr_Gd160; - ismap["160Gd"] = is; + ismap["160Gd"] = is; table["Gd"] = ismap; ismap.clear(); @@ -1024,22 +1024,22 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Dy156; is.probability = Pr_Dy156; - ismap["156Dy"] = is; + ismap["156Dy"] = is; is.mass = Dy158; is.probability = Pr_Dy158; - ismap["158Dy"] = is; + ismap["158Dy"] = is; is.mass = Dy160; is.probability = Pr_Dy160; - ismap["160Dy"] = is; + ismap["160Dy"] = is; is.mass = Dy161; is.probability = Pr_Dy161; - ismap["161Dy"] = is; + ismap["161Dy"] = is; is.mass = Dy162; is.probability = Pr_Dy162; - ismap["162Dy"] = is; + ismap["162Dy"] = is; is.mass = Dy163; is.probability = Pr_Dy163; - ismap["163Dy"] = is; + ismap["163Dy"] = is; is.mass = Dy164; is.probability = Pr_Dy164; ismap["Dy"] = is; @@ -1054,22 +1054,22 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Er162; is.probability = Pr_Er162; - ismap["162Er"] = is; + ismap["162Er"] = is; is.mass = Er164; is.probability = Pr_Er164; - ismap["164Er"] = is; + ismap["164Er"] = is; is.mass = Er166; is.probability = Pr_Er166; ismap["Er"] = is; is.mass = Er167; is.probability = Pr_Er167; - ismap["167Er"] = is; + ismap["167Er"] = is; is.mass = Er168; is.probability = Pr_Er168; - ismap["168Er"] = is; + ismap["168Er"] = is; is.mass = Er170; is.probability = Pr_Er170; - ismap["170Er"] = is; + ismap["170Er"] = is; table["Er"] = ismap; ismap.clear(); @@ -1081,25 +1081,25 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Yb168; is.probability = Pr_Yb168; - ismap["168Yb"] = is; + ismap["168Yb"] = is; is.mass = Yb170; is.probability = Pr_Yb170; - ismap["170Yb"] = is; + ismap["170Yb"] = is; is.mass = Yb171; is.probability = Pr_Yb171; - ismap["171Yb"] = is; + ismap["171Yb"] = is; is.mass = Yb172; is.probability = Pr_Yb172; - ismap["172Yb"] = is; + ismap["172Yb"] = is; is.mass = Yb173; is.probability = Pr_Yb173; - ismap["173Yb"] = is; + ismap["173Yb"] = is; is.mass = Yb174; is.probability = Pr_Yb174; ismap["Yb"] = is; is.mass = Yb176; is.probability = Pr_Yb176; - ismap["176Yb"] = is; + ismap["176Yb"] = is; table["Yb"] = ismap; ismap.clear(); @@ -1108,25 +1108,25 @@ cIsotopeMap::cIsotopeMap() { ismap["Lu"] = is; is.mass = Lu176; is.probability = Pr_Lu176; - ismap["176Lu"] = is; + ismap["176Lu"] = is; table["Lu"] = ismap; ismap.clear(); is.mass = Hf174; is.probability = Pr_Hf174; - ismap["174Hf"] = is; + ismap["174Hf"] = is; is.mass = Hf176; is.probability = Pr_Hf176; - ismap["176Hf"] = is; + ismap["176Hf"] = is; is.mass = Hf177; is.probability = Pr_Hf177; - ismap["177Hf"] = is; + ismap["177Hf"] = is; is.mass = Hf178; is.probability = Pr_Hf178; - ismap["178Hf"] = is; + ismap["178Hf"] = is; is.mass = Hf179; is.probability = Pr_Hf179; - ismap["179Hf"] = is; + ismap["179Hf"] = is; is.mass = Hf180; is.probability = Pr_Hf180; ismap["Hf"] = is; @@ -1135,7 +1135,7 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Ta180; is.probability = Pr_Ta180; - ismap["180Ta"] = is; + ismap["180Ta"] = is; is.mass = Ta181; is.probability = Pr_Ta181; ismap["Ta"] = is; @@ -1144,25 +1144,25 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = W180; is.probability = Pr_W180; - ismap["180W"] = is; + ismap["180W"] = is; is.mass = W182; is.probability = Pr_W182; - ismap["182W"] = is; + ismap["182W"] = is; is.mass = W183; is.probability = Pr_W183; - ismap["183W"] = is; + ismap["183W"] = is; is.mass = W184; is.probability = Pr_W184; ismap["W"] = is; is.mass = W186; is.probability = Pr_W186; - ismap["186W"] = is; + ismap["186W"] = is; table["W"] = ismap; ismap.clear(); is.mass = Re185; is.probability = Pr_Re185; - ismap["185Re"] = is; + ismap["185Re"] = is; is.mass = Re187; is.probability = Pr_Re187; ismap["Re"] = is; @@ -1171,22 +1171,22 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Os184; is.probability = Pr_Os184; - ismap["184Os"] = is; + ismap["184Os"] = is; is.mass = Os186; is.probability = Pr_Os186; - ismap["186Os"] = is; + ismap["186Os"] = is; is.mass = Os187; is.probability = Pr_Os187; - ismap["187Os"] = is; + ismap["187Os"] = is; is.mass = Os188; is.probability = Pr_Os188; - ismap["188Os"] = is; + ismap["188Os"] = is; is.mass = Os189; is.probability = Pr_Os189; - ismap["189Os"] = is; + ismap["189Os"] = is; is.mass = Os190; is.probability = Pr_Os190; - ismap["190Os"] = is; + ismap["190Os"] = is; is.mass = Os192; is.probability = Pr_Os192; ismap["Os"] = is; @@ -1195,7 +1195,7 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Ir191; is.probability = Pr_Ir191; - ismap["191Ir"] = is; + ismap["191Ir"] = is; is.mass = Ir193; is.probability = Pr_Ir193; ismap["Ir"] = is; @@ -1204,22 +1204,22 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Pt190; is.probability = Pr_Pt190; - ismap["190Pt"] = is; + ismap["190Pt"] = is; is.mass = Pt192; is.probability = Pr_Pt192; - ismap["192Pt"] = is; + ismap["192Pt"] = is; is.mass = Pt194; is.probability = Pr_Pt194; - ismap["194Pt"] = is; + ismap["194Pt"] = is; is.mass = Pt195; is.probability = Pr_Pt195; ismap["Pt"] = is; is.mass = Pt196; is.probability = Pr_Pt196; - ismap["196Pt"] = is; + ismap["196Pt"] = is; is.mass = Pt198; is.probability = Pr_Pt198; - ismap["198Pt"] = is; + ismap["198Pt"] = is; table["Pt"] = ismap; ismap.clear(); @@ -1231,31 +1231,31 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Hg196; is.probability = Pr_Hg196; - ismap["196Hg"] = is; + ismap["196Hg"] = is; is.mass = Hg198; is.probability = Pr_Hg198; - ismap["198Hg"] = is; + ismap["198Hg"] = is; is.mass = Hg199; is.probability = Pr_Hg199; - ismap["199Hg"] = is; + ismap["199Hg"] = is; is.mass = Hg200; is.probability = Pr_Hg200; - ismap["200Hg"] = is; + ismap["200Hg"] = is; is.mass = Hg201; is.probability = Pr_Hg201; - ismap["201Hg"] = is; + ismap["201Hg"] = is; is.mass = Hg202; is.probability = Pr_Hg202; ismap["Hg"] = is; is.mass = Hg204; is.probability = Pr_Hg204; - ismap["204Hg"] = is; + ismap["204Hg"] = is; table["Hg"] = ismap; ismap.clear(); is.mass = Tl203; is.probability = Pr_Tl203; - ismap["203Tl"] = is; + ismap["203Tl"] = is; is.mass = Tl205; is.probability = Pr_Tl205; ismap["Tl"] = is; @@ -1264,13 +1264,13 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = Pb204; is.probability = Pr_Pb204; - ismap["204Pb"] = is; + ismap["204Pb"] = is; is.mass = Pb206; is.probability = Pr_Pb206; - ismap["206Pb"] = is; + ismap["206Pb"] = is; is.mass = Pb207; is.probability = Pr_Pb207; - ismap["207Pb"] = is; + ismap["207Pb"] = is; is.mass = Pb208; is.probability = Pr_Pb208; ismap["Pb"] = is; @@ -1333,10 +1333,10 @@ cIsotopeMap::cIsotopeMap() { ismap.clear(); is.mass = U234; is.probability = Pr_U234; - ismap["234U"] = is; + ismap["234U"] = is; is.mass = U235; is.probability = Pr_U235; - ismap["235U"] = is; + ismap["235U"] = is; is.mass = U238; is.probability = Pr_U238; ismap["U"] = is; diff --git a/CycloBranch/core/cMzML.cpp b/CycloBranch/core/cMzML.cpp index 4baadb7..e4cb643 100644 --- a/CycloBranch/core/cMzML.cpp +++ b/CycloBranch/core/cMzML.cpp @@ -1,5 +1,10 @@ #include "core/cMzML.h" +#include +#include +#include +#include + #include #include "core/cPeaksList.h" @@ -48,7 +53,18 @@ cMzML::~cMzML() { } -int cMzML::parse(string& filename, vector& peaklists, eModeType mode, cMainThread* os, bool& terminatecomputation) { +int cMzML::parse(string& filename, vector& peaklists, int profilespectrumid, eModeType mode, cMainThread* os, bool& terminatecomputation) { + + ifstream f; + bool good; + + f.open(filename.c_str()); + good = f.good(); + f.close(); + + if (!good) { + return 0; + } parser->parse(filename.c_str()); document = parser->getDocument(); @@ -100,6 +116,8 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode string mgfname = filename.substr(0, (int)filename.size() - 4); stringstream ss; + + cPeaksList peaklist; // childrens of mzML DOMNode* currentNode1 = root->getFirstChild(); @@ -132,6 +150,7 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode DOMElement* currentElement3 = dynamic_cast(currentNode3); if (compareElementTagName(currentElement3, "spectrum")) { + peaklist.clear(); string title = getAttribute(currentElement3, "id"); bool skipspectrum = false; @@ -149,36 +168,90 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode if (compareElementTagName(currentElement4, "cvParam")) { - string accession = getAttribute(currentElement4, "accession"); + string accession = getAttribute(currentElement4, "accession"); - if (accession.compare("MS:1000128") == 0) { - isprofilespectrum = true; - } + if (accession.compare("MS:1000128") == 0) { + isprofilespectrum = true; + } - if (accession.compare("MS:1000511") == 0) { + if (accession.compare("MS:1000511") == 0) { - int level = atoi(getAttribute(currentElement4, "value").c_str()); + int level = atoi(getAttribute(currentElement4, "value").c_str()); - if ((level == 1) && (mode != dereplication)) { - skipspectrum = true; - } + if ((level == 1) && ((mode == denovoengine) || (mode == singlecomparison) || (mode == databasesearch))) { + skipspectrum = true; + } - if ((level > 1) && (mode == dereplication)) { - skipspectrum = true; + if ((level > 1) && ((mode == dereplication) || (mode == compoundsearch))) { + skipspectrum = true; + } + + } + + + } + + + if (!skipspectrum && compareElementTagName(currentElement4, "scanList")) { + + // childrens of scanList + DOMNode* currentNode5 = currentNode4->getFirstChild(); + while (currentNode5) { + + + if (currentNode5->getNodeType() == DOMNode::ELEMENT_NODE) { + + DOMElement* currentElement5 = dynamic_cast(currentNode5); + if (compareElementTagName(currentElement5, "scan")) { + + + // childrens of scan + DOMNode* currentNode6 = currentNode5->getFirstChild(); + while (currentNode6) { + + + if (currentNode6->getNodeType() == DOMNode::ELEMENT_NODE) { + + DOMElement* currentElement6 = dynamic_cast(currentNode6); + if (compareElementTagName(currentElement6, "cvParam")) { + + + string accession = getAttribute(currentElement6, "accession"); + + if (accession.compare("MS:1000016") == 0) { + double rt = atof(getAttribute(currentElement6, "value").c_str()); + peaklist.setRetentionTime(rt); + } + + + } + + } + + + currentNode6 = currentNode6->getNextSibling(); + + + } + + } } + currentNode5 = currentNode5->getNextSibling(); + + } + } + if (!skipspectrum && compareElementTagName(currentElement4, "binaryDataArrayList")) { - cPeaksList peaklist; bool peaklistdefined = false; - - + if (isprofilespectrum) { profilespectra = true; } @@ -197,6 +270,7 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode // childrens of binaryDataArray bool precision64 = false; + bool zlib = false; bool mzratio = false; bool intensity = false; @@ -226,11 +300,7 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode } if (accession.compare("MS:1000574") == 0) { - // zlib compression detected - if (mgfofstream.is_open()) { - mgfofstream.close(); - } - return -3; + zlib = true; } @@ -251,44 +321,62 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode datasize = 8; } - if (mzratio) { - for (int ii = 0; ii < binarysize/datasize; ii++) { + string datastring; + datastring.resize(binarysize); + for (int ii = 0; ii < binarysize; ii++) { + datastring[ii] = decoded[ii]; + } + + if (zlib) { + string compressed = datastring; + datastring.clear(); + + boost::iostreams::filtering_streambuf in; + in.push(boost::iostreams::zlib_decompressor()); + in.push(boost::make_iterator_range(compressed)); + boost::iostreams::copy(in, boost::iostreams::back_inserter(datastring)); + } + + int size = (int)datastring.size() / datasize; + + if (mzratio) { + for (int ii = 0; ii < size; ii++) { if (precision64) { - memcpy(&dblval, &decoded[ii*datasize], datasize); + memcpy(&dblval, &(datastring.data())[ii*datasize], datasize); } else { - memcpy(&fltval, &decoded[ii*datasize], datasize); + memcpy(&fltval, &(datastring.data())[ii*datasize], datasize); } if (peaklistdefined) { - peaklist[ii].mzratio = precision64?dblval:fltval; + peaklist[ii].mzratio = precision64 ? dblval : fltval; } else { cPeak peak; - peak.mzratio = precision64?dblval:fltval; + peak.mzratio = precision64 ? dblval : fltval; peaklist.add(peak); } } } if (intensity) { - for (int ii = 0; ii < binarysize/datasize; ii++) { + for (int ii = 0; ii < size; ii++) { if (precision64) { - memcpy(&dblval, &decoded[ii*datasize], datasize); + memcpy(&dblval, &(datastring.data())[ii*datasize], datasize); } else { - memcpy(&fltval, &decoded[ii*datasize], datasize); + memcpy(&fltval, &(datastring.data())[ii*datasize], datasize); } if (peaklistdefined) { - peaklist[ii].absoluteintensity = precision64?dblval:fltval; + peaklist[ii].absoluteintensity = precision64 ? dblval : fltval; } else { cPeak peak; - peak.absoluteintensity = precision64?dblval:fltval; + peak.absoluteintensity = precision64 ? dblval : fltval; peaklist.add(peak); } - } + } } XMLPlatformUtils::fgMemoryManager->deallocate(decoded); @@ -325,7 +413,12 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode if (profilespectra) { if (count == 0) { - ss << mgfname << setw(10) << setfill('0') << 0 << ".mgf"; + if (profilespectrumid == -1) { + ss << mgfname << setw(10) << setfill('0') << 0 << ".mgf"; + } + else { + ss << mgfname << "profile." << to_string(profilespectrumid) << ".mgf"; + } mgfofstream.open(ss.str()); } @@ -338,32 +431,39 @@ int cMzML::parse(string& filename, vector& peaklists, eModeType mode } } - mgfofstream << "BEGIN IONS" << endl; - mgfofstream << "TITLE=" << title << endl; - mgfofstream << "SCAN=" << to_string(count + 1) << endl; - mgfofstream << "PEPMASS=1" << endl; - mgfofstream << "RTINSECONDS=1" << endl; - mgfofstream << "CHARGE=1+" << endl << endl; - - peaksstring.clear(); - for (int ii = 0; ii < peaklist.size(); ii++) { - sprintf_s(tempstring, "%f %f\n\0", peaklist[ii].mzratio, peaklist[ii].absoluteintensity); - peaksstring.append(tempstring); + if ((profilespectrumid == -1) || (profilespectrumid == count)) { + mgfofstream << "BEGIN IONS" << endl; + mgfofstream << "TITLE=" << title << endl; + mgfofstream << "SCANS=" << to_string(count + 1) << endl; + mgfofstream << "PEPMASS=1" << endl; + mgfofstream << "RTINSECONDS=" << to_string(peaklist.getRetentionTime()) << endl; + mgfofstream << "CHARGE=1+" << endl << endl; + + peaksstring.clear(); + for (int ii = 0; ii < peaklist.size(); ii++) { + sprintf_s(tempstring, "%f %f\n\0", peaklist[ii].mzratio, peaklist[ii].absoluteintensity); + peaksstring.append(tempstring); + } + mgfofstream << peaksstring; + mgfofstream << "END IONS" << endl << endl; } - mgfofstream << peaksstring; - mgfofstream << "END IONS" << endl << endl; - if (((count + 1) % 100 == 0) && (count > 0)) { - mgfofstream.close(); - stringstream ss; - strip = (count + 1) / 100; - ss << mgfname << setw(10) << setfill('0') << strip << ".mgf"; - mgfofstream.open(ss.str()); + if (profilespectrumid == -1) { + if (((count + 1) % 100 == 0) && (count > 0)) { + mgfofstream.close(); + stringstream ss; + strip = (count + 1) / 100; + ss << mgfname << setw(10) << setfill('0') << strip << ".mgf"; + mgfofstream.open(ss.str()); + } + } + + if ((profilespectrumid == -1) || (profilespectrumid == count)) { + cPeaksList emptypeaklist; + emptypeaklist.setTitle(title); + peaklists.push_back(emptypeaklist); } - cPeaksList emptypeaklist; - emptypeaklist.setTitle(title); - peaklists.push_back(emptypeaklist); count++; } diff --git a/CycloBranch/core/cMzML.h b/CycloBranch/core/cMzML.h index 7d33db4..7bc4ac0 100644 --- a/CycloBranch/core/cMzML.h +++ b/CycloBranch/core/cMzML.h @@ -84,12 +84,13 @@ class cMzML { \brief Parse a mzml file. \param filename mzml filename \param peaklists mzml filename + \param profilespectrumid id of a profile spectrum to be extracted, -1 = extract all profile spectra \param mode program mode \param os pointer to the main thread of the application (output stream) \param terminatecomputation reference to a variable determining that the computation must be stopped - \retval 0 = success; -1 = aborted by user; -3 = zlib compression detected + \retval 0 = success; -1 = aborted by user */ - int parse(string& filename, vector& peaklists, eModeType mode, cMainThread* os, bool& terminatecomputation); + int parse(string& filename, vector& peaklists, int profilespectrumid, eModeType mode, cMainThread* os, bool& terminatecomputation); /** diff --git a/CycloBranch/core/cParameters.cpp b/CycloBranch/core/cParameters.cpp index a70a2ea..c332ffe 100644 --- a/CycloBranch/core/cParameters.cpp +++ b/CycloBranch/core/cParameters.cpp @@ -4,6 +4,79 @@ #include "core/cSummaryFormula.h" +void cParameters::fixIntensities(cPeaksList& centroidspectrum, cPeaksList& profilespectrum) { + if ((centroidspectrum.size() == 0) || (profilespectrum.size() == 0)) { + return; + } + + double minval; + int mem_j = 0; + + for (int i = 0; i < centroidspectrum.size(); i++) { + minval = fabs(centroidspectrum[i].mzratio - profilespectrum[mem_j].mzratio); + for (int j = mem_j + 1; j < profilespectrum.size(); j++) { + if ((fabs(centroidspectrum[i].mzratio - profilespectrum[j].mzratio)) < minval) { + minval = fabs(centroidspectrum[i].mzratio - profilespectrum[j].mzratio); + mem_j = j; + } + else { + break; + } + } + centroidspectrum[i].absoluteintensity = profilespectrum[mem_j].absoluteintensity; + } +} + + +bool cParameters::checkSeniorRules(vector& combarray, vector& valences, int maxcomponents) { + int totalvalence = 0; + int i, size; + + i = 0; + size = (int)combarray.size(); + while ((i < size) && (combarray[i] > 0)) { + totalvalence += valences[combarray[i] - 1]; + i++; + } + + // SENIOR rule 1 - the sum of valences must be even + // SENIOR rule 3 - the sum of valences >= 2 * (atomscount - maximum number of allowed components in the graph); edges - nodes + components >= 0 + if ((totalvalence % 2 == 1) || (totalvalence < 2 * (i - maxcomponents))) { + return false; + } + + return true; +} + + +/*double cParameters::getMassAndCounts(vector& combarray, vector& countsofelements, vector& massesofelements) { + int i, size; + + i = 0; + size = (int)countsofelements.size(); + for (i = 0; i < size; i++) { + countsofelements[i] = 0; + } + + i = 0; + size = (int)combarray.size(); + while ((i < size) && (combarray[i] > 0)) { + countsofelements[combarray[i] - 1]++; + i++; + } + + double mass = 0; + size = (int)countsofelements.size(); + for (i = 0; i < size; i++) { + if (countsofelements[i] > 0) { + mass += massesofelements[i] * (double)(countsofelements[i]); + } + } + + return mass; +}*/ + + cParameters::cParameters() { clear(); } @@ -30,6 +103,7 @@ void cParameters::clear() { minimumrelativeintensitythreshold = 1; minimumabsoluteintensitythreshold = 0; minimummz = 150; + maximummz = 0; fwhm = 0.05; bricksdatabasefilename = ""; bricksdatabase.clear(); @@ -41,15 +115,20 @@ void cParameters::clear() { modificationsfilename = ""; searchedmodifications.clear(); maximumnumberofthreads = 1; - mode = denovoengine; + mode = dereplication; scoretype = number_of_matched_peaks; maximumcombinedlosses = 2; //clearhitswithoutparent = false; + basicformulacheck = true; + advancedformulacheck = true; + noratiocheck = true; + mzdifftolerance = 0; + intensitytolerance = 0; reportunmatchedtheoreticalpeaks = false; generateisotopepattern = false; minimumpatternsize = 1; minimumfeaturesize = 1; - allionsmustbepresent = false; + minimumiontypes = 1; cyclicnterminus = false; cycliccterminus = false; internalfragments = false; @@ -117,6 +196,15 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { string ibdfilename; string mzmlname; + cPeaksList profilelist; + ifstream profilestream; + string profilemgfname; + string peaksfoldername; + + int hrs, mins, secs; + QTime time; + bool good; + if (peaklistfilename.empty()) { error = true; errormessage = "A peaklist is not specified. Have you configured the engine (Search -> Settings...) ?\n"; @@ -193,197 +281,288 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { if (!error) { - switch (peaklistfileformat) - { - case txt: - peakliststream.open(peaklistfilename); - break; - case mgf: - peakliststream.open(peaklistfilename); - break; - case mzXML: - *os << "Converting the file " + peaklistfilename + " to mgf ... "; + switch (peaklistfileformat) { + case txt: + peakliststream.open(peaklistfilename); + break; + case mgf: + peakliststream.open(peaklistfilename); + break; + case mzXML: + *os << "Converting the file " + peaklistfilename + " to mzML ... "; - #if OS_TYPE == UNX - s = installdir.toStdString() + "External/linux/any2mgf.sh " + peaklistfilename; - if (system(s.c_str()) != 0) { - error = true; - errormessage = "The file cannot be converted.\n"; - errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; - errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; - errormessage += "Do you have FileConverter installed (OpenMS 2.x must be installed) ?\n"; - errormessage += "Do you have 'any2mgf.sh' file located in '" + installdir.toStdString() + "External/linux' folder ?\n"; - errormessage += "Is the file 'any2mgf.sh' executable (sudo chmod +x " + installdir.toStdString() + "External/linux/any2mgf.sh) ? \n"; - } - #else - #if OS_TYPE == OSX - s = installdir.toStdString() + "External/macosx/any2mgf.sh " + peaklistfilename; + #if OS_TYPE == UNX + s = installdir.toStdString() + "External/linux/any2mzml.sh " + peaklistfilename; if (system(s.c_str()) != 0) { error = true; errormessage = "The file cannot be converted.\n"; errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; errormessage += "Do you have FileConverter installed (OpenMS 2.x must be installed) ?\n"; - errormessage += "Do you have 'any2mgf.sh' file located in '" + installdir.toStdString() + "External/macosx' folder ?\n"; - errormessage += "Is the file 'any2mgf.sh' executable ? \n"; + errormessage += "Do you have 'any2mzml.sh' file located in '" + installdir.toStdString() + "External/linux' folder ?\n"; + errormessage += "Is the file 'any2mzml.sh' executable (sudo chmod +x " + installdir.toStdString() + "External/linux/any2mzml.sh) ? \n"; } - #else - s = "External\\windows\\any2mgf.bat \"" + peaklistfilename + "\""; + #else + #if OS_TYPE == OSX + s = installdir.toStdString() + "External/macosx/any2mzml.sh " + peaklistfilename; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The file cannot be converted.\n"; + errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; + errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; + errormessage += "Do you have FileConverter installed (OpenMS 2.x must be installed) ?\n"; + errormessage += "Do you have 'any2mzml.sh' file located in '" + installdir.toStdString() + "External/macosx' folder ?\n"; + errormessage += "Is the file 'any2mzml.sh' executable ? \n"; + } + #else + s = "External\\windows\\any2mzml.bat \"" + peaklistfilename + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The file cannot be converted.\n"; + errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; + errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; + errormessage += "Do you have FileConverter installed (OpenMS 2.x must be installed) ?\n"; + errormessage += "Do you have a path to FileConverter in your PATH variable (e.g., 'C:/Program Files/OpenMS-2.3.0/bin') ?\n"; + errormessage += "Do you have 'any2mzml.bat' file located in the '" + appname.toStdString() + "/External/windows' folder ?\n"; + } + #endif + #endif + + if (!error) { + *os << "ok" << endl << endl; + mzmlname = peaklistfilename + ".mzML"; + peakliststream.open(mzmlname); + } + break; + case baf: + #if OS_TYPE == WIN + time.start(); + + *os << "Processing the file " + peaklistfilename + ":" << endl; + + /* + s = "External\\windows\\baf2csv.bat \"" + peaklistfilename + "\""; if (system(s.c_str()) != 0) { error = true; errormessage = "The file cannot be converted.\n"; errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; + errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; + errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; - errormessage += "Do you have FileConverter installed (OpenMS 2.x must be installed) ?\n"; - errormessage += "Do you have a path to FileConverter in your PATH variable (e.g., 'C:/Program Files/OpenMS-2.3.0/bin') ?\n"; - errormessage += "Do you have 'any2mgf.bat' file located in the '" + appname.toStdString() + "/External/windows' folder ?\n"; + errormessage += "Do you have 'baf2csv.bat' file located in the 'External/windows' folder ?\n"; } - #endif - #endif - if (!error) { - *os << "ok" << endl << endl; - peakliststream.open(peaklistfilename + ".mgf"); - } - break; - case baf: - #if OS_TYPE == WIN - *os << "Processing the file " + peaklistfilename + ":" << endl; + if (!error) { + *os << "ok" << endl; + peakliststream.open(peaklistfilename + ".csv"); + } + */ - *os << "centroid spectra ... "; - s = "External\\windows\\baf2csv.bat \"" + peaklistfilename + "\""; - if (system(s.c_str()) != 0) { - error = true; - errormessage = "The file cannot be converted.\n"; - errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; - errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; - errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; - errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; - errormessage += "Do you have 'baf2csv.bat' file located in the 'External/windows' folder ?\n"; - } + mzmlname = peaklistfilename + ".mzML"; + peakliststream.open(mzmlname); + good = peakliststream.good(); + peakliststream.close(); - if (!error) { - *os << "ok" << endl; - peakliststream.open(peaklistfilename + ".csv"); - } + if (good) { + *os << "The previously converted centroid spectra were found." << endl; + *os << "The following file was used: " << mzmlname << endl; + } + else { + *os << "centroid spectra ... "; + + s = "External\\windows\\baf2mzml.bat \"" + peaklistfilename + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The file cannot be converted.\n"; + errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; + errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; + errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; + errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; + errormessage += "Do you have 'baf2mzml.bat' file located in the 'External/windows' folder ?\n"; + } + if (!error) { + *os << "ok" << endl; + } + } + + if (!error) { + peakliststream.open(mzmlname); + } + + if (!error && useprofiledata && convertprofiledata) { + *os << "profile spectra ... "; + s = "External\\windows\\baf2profile.bat \"" + peaklistfilename + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The file cannot be converted.\n"; + errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; + errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; + errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; + errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; + errormessage += "Do you have 'baf2profile.bat' file located in the 'External/windows' folder ?\n"; + } + + if (!error) { + *os << "ok" << endl; + } + } + + *os << endl; + + secs = time.elapsed() / 1000; + mins = (secs / 60) % 60; + hrs = (secs / 3600); + secs = secs % 60; + + *os << "The data conversion took: " << to_string(hrs) << " hrs, " << to_string(mins) << " min, " << to_string(secs) << " sec." << endl << endl; + #endif + break; + case raw: + #if OS_TYPE == WIN + *os << "Converting the file " + peaklistfilename + " ... "; - if (useprofiledata && convertprofiledata) { - *os << "profile spectra ... "; - s = "External\\windows\\baf2profile.bat \"" + peaklistfilename + "\""; + s = "External\\windows\\raw2mzmlpeaks.bat \"" + peaklistfilename + "\""; if (system(s.c_str()) != 0) { error = true; errormessage = "The file cannot be converted.\n"; + errormessage += "Is the file '" + peaklistfilename + "' opened elsewhere ?\n"; errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; - errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; - errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; - errormessage += "Do you have 'baf2profile.bat' file located in the 'External/windows' folder ?\n"; + errormessage += "Do you have msconvert.exe installed (OpenMS 2.x including ProteoWizard must be installed) ?\n"; + errormessage += "Do you have a path to msconvert.exe in your PATH variable (e.g., 'C:/Program Files/OpenMS-2.3.0/share/OpenMS/THIRDPARTY/pwiz-bin') ?\n"; + errormessage += "Do you have 'raw2mzmlpeaks.bat' file located in the '" + appname.toStdString() + "/External/windows' folder ?\n"; + } + + if (!error && useprofiledata) { + s = "External\\windows\\raw2mzml.bat \"" + peaklistfilename + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The file cannot be converted.\n"; + errormessage += "Is the file '" + peaklistfilename + "' opened elsewhere ?\n"; + errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; + errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; + errormessage += "Do you have msconvert.exe installed (OpenMS 2.x including ProteoWizard must be installed) ?\n"; + errormessage += "Do you have a path to msconvert.exe in your PATH variable (e.g., 'C:/Program Files/OpenMS-2.3.0/share/OpenMS/THIRDPARTY/pwiz-bin') ?\n"; + errormessage += "Do you have 'raw2mzml.bat' file located in the '" + appname.toStdString() + "/External/windows' folder ?\n"; + } } if (!error) { - *os << "ok" << endl; + *os << "ok" << endl << endl; + mzmlname = peaklistfilename.substr(0, peaklistfilename.rfind('.')) + "_converted.mzML"; + peakliststream.open(mzmlname); } - } + #endif + break; + case dat: + #if OS_TYPE == WIN + foldername = peaklistfilename.substr(0, peaklistfilename.rfind('/')); + peaksfoldername = foldername.substr(0, foldername.size() - 4) + "_PEAKS.raw"; - *os << endl; - #endif - break; - case raw: - #if OS_TYPE == WIN - *os << "Converting the file " + peaklistfilename + " ... "; - s = "External\\windows\\raw2mzml.bat \"" + peaklistfilename + "\""; - if (system(s.c_str()) != 0) { - error = true; - errormessage = "The file cannot be converted.\n"; - errormessage += "Is the file '" + peaklistfilename + "' opened elsewhere ?\n"; - errormessage += "Does the file '" + peaklistfilename + "' exist ?\n"; - errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; - errormessage += "Do you have msconvert.exe installed (OpenMS 2.x including ProteoWizard must be installed) ?\n"; - errormessage += "Do you have a path to msconvert.exe in your PATH variable (e.g., 'C:/Program Files/OpenMS-2.3.0/share/OpenMS/THIRDPARTY/pwiz-bin') ?\n"; - errormessage += "Do you have 'raw2mzml.bat' file located in the '" + appname.toStdString() + "/External/windows' folder ?\n"; - } + *os << "Generating centroid data folder from " + foldername + " ... "; + s = "External\\windows\\waters\\profile2peaks.exe \"" + foldername + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The raw data folder cannot be converted.\n"; + errormessage += "Does the folder '" + foldername + "' exist ?\n"; + errormessage += "Is the folder with the folder '" + foldername + "' writable ?\n"; + errormessage += "Do you have 'profile2peaks.exe' file located in the 'External/windows/waters' folder ?\n"; + } + else { + *os << "ok" << endl << endl; + *os << "Centroid data folder " + peaksfoldername + " successfully created." << endl << endl; + } - if (!error) { - *os << "ok" << endl << endl; - mzmlname = peaklistfilename.substr(0, peaklistfilename.rfind('.')) + ".mzML"; - peakliststream.open(mzmlname); - } - #endif - break; - case dat: - #if OS_TYPE == WIN - foldername = peaklistfilename.substr(0, peaklistfilename.rfind('/')); - *os << "Converting the raw data folder " + foldername + " ... "; - s = "External\\windows\\waters\\raw2mgf.exe \"" + foldername + "\""; - if (system(s.c_str()) != 0) { - error = true; - errormessage = "The raw data folder cannot be converted.\n"; - errormessage += "Does the folder '" + foldername + "' exist ?\n"; - errormessage += "Is the folder with the folder '" + foldername + "' writable ?\n"; - errormessage += "Do you have 'raw2mgf.exe' file located in the 'External/windows/waters' folder ?\n"; - } + if (!error) { + *os << "Converting profile data " + foldername + " ... "; + s = "External\\windows\\waters\\raw2mgf.exe \"" + foldername + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The raw data folder cannot be converted.\n"; + errormessage += "Does the folder '" + foldername + "' exist ?\n"; + errormessage += "Is the folder with the folder '" + foldername + "' writable ?\n"; + errormessage += "Do you have 'raw2mgf.exe' file located in the 'External/windows/waters' folder ?\n"; + } + else { + *os << "ok" << endl << endl; + } + } - if (!error) { - *os << "ok" << endl << endl; - string mgfname = foldername.substr(0, foldername.rfind('.')) + ".mgf"; - peakliststream.open(mgfname); - } - #endif - break; - case mis: - #if OS_TYPE == WIN - foldername = peaklistfilename.substr(0, peaklistfilename.rfind('.')); - *os << "Converting flexImaging data folder " + foldername + " ... "; - s = "External\\windows\\mis2csv.bat \"" + foldername + "\""; - if (system(s.c_str()) != 0) { - error = true; - errormessage = "The folder cannot be converted.\n"; - errormessage += "Does the folder '" + foldername + "' exist ?\n"; - errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; - errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; - errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; - errormessage += "Do you have 'mis2csv.bat' file located in the 'External/windows' folder ?\n"; - } + if (!error) { + *os << "Converting centroid data " + peaksfoldername + " ... "; + s = "External\\windows\\waters\\raw2mgf.exe \"" + peaksfoldername + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The raw data folder cannot be converted.\n"; + errormessage += "Does the folder '" + peaksfoldername + "' exist ?\n"; + errormessage += "Is the folder with the folder '" + peaksfoldername + "' writable ?\n"; + errormessage += "Do you have 'raw2mgf.exe' file located in the 'External/windows/waters' folder ?\n"; + } + else { + *os << "ok" << endl << endl; + } + } - if (!error) { - *os << "ok" << endl << endl; - peakliststream.open(foldername + ".baf.csv"); - spotliststream.open(foldername + ".baf.txt"); - } - #endif - break; - case ser: - #if OS_TYPE == WIN - foldername = peaklistfilename.substr(0, peaklistfilename.length() - 4); - *os << "Converting apex data folder " + foldername + " ... "; - s = "External\\windows\\ser2csv.bat \"" + foldername + "\""; - if (system(s.c_str()) != 0) { - error = true; - errormessage = "The folder cannot be converted.\n"; - errormessage += "Does the folder '" + foldername + "' exist ?\n"; - errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; - errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; - errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; - errormessage += "Do you have 'ser2csv.bat' file located in the 'External/windows' folder ?\n"; - } + if (!error) { + string mgfname = peaksfoldername.substr(0, peaksfoldername.rfind('.')) + ".mgf"; + peakliststream.open(mgfname); + } + #endif + break; + case mis: + #if OS_TYPE == WIN + foldername = peaklistfilename.substr(0, peaklistfilename.rfind('.')); + *os << "Converting flexImaging data folder " + foldername + " ... "; + s = "External\\windows\\mis2csv.bat \"" + foldername + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The folder cannot be converted.\n"; + errormessage += "Does the folder '" + foldername + "' exist ?\n"; + errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; + errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; + errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; + errormessage += "Do you have 'mis2csv.bat' file located in the 'External/windows' folder ?\n"; + } - if (!error) { - *os << "ok" << endl << endl; - peakliststream.open(foldername + ".csv"); - titleliststream.open(foldername + ".txt"); - } - #endif - break; - case mzML: - peakliststream.open(peaklistfilename); - break; - case imzML: - ibdfilename = peaklistfilename.substr(0, (int)peaklistfilename.size() - 5); - ibdfilename += "ibd"; - peakliststream.open(ibdfilename, std::ifstream::binary); - break; - default: - break; + if (!error) { + *os << "ok" << endl << endl; + peakliststream.open(foldername + ".baf.csv"); + spotliststream.open(foldername + ".baf.txt"); + } + #endif + break; + case ser: + #if OS_TYPE == WIN + foldername = peaklistfilename.substr(0, peaklistfilename.length() - 4); + *os << "Converting apex data folder " + foldername + " ... "; + s = "External\\windows\\ser2csv.bat \"" + foldername + "\""; + if (system(s.c_str()) != 0) { + error = true; + errormessage = "The folder cannot be converted.\n"; + errormessage += "Does the folder '" + foldername + "' exist ?\n"; + errormessage += "Do you have Bruker Daltonik's CompassXport installed ?\n"; + errormessage += "Do you have path to the CompassXport.exe in your PATH variable ?\n"; + errormessage += "Is the directory with the file '" + peaklistfilename + "' writable ?\n"; + errormessage += "Do you have 'ser2csv.bat' file located in the 'External/windows' folder ?\n"; + } + + if (!error) { + *os << "ok" << endl << endl; + peakliststream.open(foldername + ".csv"); + titleliststream.open(foldername + ".txt"); + } + #endif + break; + case mzML: + peakliststream.open(peaklistfilename); + break; + case imzML: + ibdfilename = peaklistfilename.substr(0, (int)peaklistfilename.size() - 5); + ibdfilename += "ibd"; + peakliststream.open(ibdfilename, std::ifstream::binary); + break; + default: + break; } } @@ -404,7 +583,7 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { } } else { - if (os && (peaklistfileformat != mzML) && (peaklistfileformat != imzML) && (peaklistfileformat != raw) && (peaklistfileformat != ser)) { + if (os && (peaklistfileformat != mzML) && (peaklistfileformat != mzXML) && (peaklistfileformat != imzML) && (peaklistfileformat != baf) && (peaklistfileformat != raw) && (peaklistfileformat != ser)) { *os << "Loading the peaklist(s)... "; } switch (peaklistfileformat) { @@ -412,13 +591,58 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { peaklistseries.loadFromPlainTextStream(peakliststream); break; case mzXML: + errtype = peaklistseries.loadFromMZMLStream(mzmlname, peakliststream, fwhm, mode, os, terminatecomputation); + if (errtype == -1) { + error = true; + errormessage = "Aborted by user.\n"; + } + if (errtype == -2) { + error = true; + #if OS_TYPE == UNX + errormessage = "Raw data cannot be converted.\n"; + errormessage += "Does the file '" + mzmlname + "' exist ?\n"; + errormessage += "Is the directory with the file '" + mzmlname + "' writable ?\n"; + errormessage += "Do you have enough space on your hard drive ?\n"; + errormessage += "Do you have OpenMS 2.x installed ?\n"; + errormessage += "Do you have 'raw2peaks.sh' file located in '" + installdir.toStdString() + "External/linux' folder ?\n"; + errormessage += "Is the file 'raw2peaks.sh' executable (sudo chmod +x " + installdir.toStdString() + "External/linux/raw2peaks.sh) ? \n"; + #else + #if OS_TYPE == OSX + errormessage = "Raw data cannot be converted.\n"; + errormessage += "Does the file '" + mzmlname + "' exist ?\n"; + errormessage += "Is the directory with the file '" + mzmlname + "' writable ?\n"; + errormessage += "Do you have enough space on your hard drive ?\n"; + errormessage += "Do you have OpenMS 2.x installed ?\n"; + errormessage += "Do you have 'raw2peaks.sh' file located in '" + installdir.toStdString() + "External/macosx' folder ?\n"; + errormessage += "Is the file 'raw2peaks.sh' executable (sudo chmod +x " + installdir.toStdString() + "External/macosx/raw2peaks.sh) ? \n"; + #else + errormessage = "Raw data cannot be converted.\n"; + errormessage += "Does the file '" + mzmlname + "' exist ?\n"; + errormessage += "Is the directory with the file '" + mzmlname + "' writable ?\n"; + errormessage += "Do you have enough space on your hard drive ?\n"; + errormessage += "Do you have OpenMS 2.x installed ?\n"; + errormessage += "Do you have a path to OpenMS binaries folder in your PATH variable (e.g., 'C:/Program Files/OpenMS-2.3.0/bin') ?\n"; + errormessage += "Do you have 'raw2peaks.bat' file located in the '" + appname.toStdString() + "/External/windows' folder ?\n"; + #endif + #endif + } + break; case mgf: peaklistseries.loadFromMGFStream(peakliststream); break; case baf: + /* #if OS_TYPE == WIN peaklistseries.loadFromBAFStream(peakliststream); #endif + */ + #if OS_TYPE == WIN + errtype = peaklistseries.loadFromMZMLStream(mzmlname, peakliststream, fwhm, mode, os, terminatecomputation); + if (errtype == -1) { + error = true; + errormessage = "Aborted by user.\n"; + } + #endif break; case raw: #if OS_TYPE == WIN @@ -437,15 +661,29 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { errormessage += "Do you have a path to OpenMS binaries folder in your PATH variable (e.g., 'C:/Program Files/OpenMS-2.3.0/bin') ?\n"; errormessage += "Do you have 'raw2peaks.bat' file located in the '" + appname.toStdString() + "/External/windows' folder ?\n"; } - if (errtype == -3) { - error = true; - errormessage = "Failed to load the mzML file, zlib compression is not supported. The spectra must be stored in the mzML file with the attribute \"no compression\".\n"; - } #endif break; case dat: #if OS_TYPE == WIN peaklistseries.loadFromMGFStream(peakliststream); + + profilemgfname = foldername.substr(0, foldername.rfind('.')) + ".mgf"; + profilestream.open(profilemgfname); + + for (int i = 0; i < peaklistseries.size(); i++) { + profilelist.clear(); + profilelist.loadFromMGFStream(profilestream); + + if (peaklistseries[i].getTitle().compare(profilelist.getTitle()) != 0) { + error = true; + errormessage = "The number of spectra in " + foldername + " and " + peaksfoldername + " is different.\n"; + break; + } + + fixIntensities(peaklistseries[i], profilelist); + } + + profilestream.close(); #endif break; case mis: @@ -511,10 +749,6 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { #endif #endif } - if (errtype == -3) { - error = true; - errormessage = "Failed to load the mzML file, zlib compression is not supported. The spectra must be stored in the mzML file with the attribute \"no compression\".\n"; - } break; case imzML: errtype = peaklistseries.loadFromIMZMLStream(peaklistfilename, peakliststream, fwhm, defaultmaxx, defaultmaxy, defaultpixelsizex, defaultpixelsizey, vendor, os, terminatecomputation); @@ -560,7 +794,7 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { default: break; } - if (os && (peaklistfileformat != mzML) && (peaklistfileformat != imzML) && (peaklistfileformat != raw) && (peaklistfileformat != ser)) { + if (os && (peaklistfileformat != mzML) && (peaklistfileformat != mzXML) && (peaklistfileformat != imzML) && (peaklistfileformat != baf) && (peaklistfileformat != raw) && (peaklistfileformat != ser)) { *os << "ok" << endl << endl; } } @@ -571,7 +805,7 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { // bricksdatabase check - if (!error && ((mode == denovoengine) || (mode == singlecomparison) || (mode == databasesearch))) { + if (!error && ((mode == denovoengine) || ((mode == singlecomparison) && (peptidetype != other)) || ((mode == databasesearch) && (peptidetype != other)))) { bricksdatabasestream.open(bricksdatabasefilename); if (!bricksdatabasestream.good()) { @@ -622,7 +856,7 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { // modifications check - if (!error && ((mode == denovoengine) || (mode == singlecomparison) || (mode == databasesearch))) { + if (!error && ((mode == denovoengine) || (mode == singlecomparison) || ((mode == databasesearch) && (peptidetype != other)))) { searchedmodifications.clear(); @@ -734,7 +968,7 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { // check theoretical fragments in positive/negative mode - if (!error && (mode == dereplication)) { + if (!error && ((mode == dereplication) || (mode == compoundsearch))) { i = 0; while (i < (int)ionsfortheoreticalspectra.size()) { if (iondefinitions[ionsfortheoreticalspectra[i]].positive != (precursorcharge > 0)) { @@ -747,15 +981,6 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { } - // calculate combinations of neutral losses - if (!error) { - errtype = calculateNeutralLosses(terminatecomputation, errormessage); - if (errtype == -1) { - error = true; - } - } - - // report errors and return if (error) { if (os) { @@ -772,18 +997,60 @@ int cParameters::checkAndPrepare(bool& terminatecomputation) { } -bool cParameters::checkModifications(cSequence& sequence, int& startmodifid, int& endmodifid, int& middlemodifid, string& errormessage) { - startmodifid = 0; - endmodifid = 0; - middlemodifid = 0; - errormessage = ""; - - if ((sequence.getPeptideType() == linear) || (sequence.getPeptideType() == branched) || (sequence.getPeptideType() == branchcyclic) || (sequence.getPeptideType() == linearpolyketide)) { +int cParameters::prepareLossesAndCompounds(bool& terminatecomputation) { + bool error = false; + string errormessage = ""; + int errtype; - if ((sequence.getPeptideType() == linear) || (sequence.getPeptideType() == branched) || (sequence.getPeptideType() == linearpolyketide)) { - startmodifid = -1; - endmodifid = -1; - } + + // calculate combinations of neutral losses or generate compounds + neutrallossesdefinitions.clear(); + neutrallossesfortheoreticalspectra.clear(); + numberofgeneratedneutrallosses = 0; + if (!error) { + if ((mode == denovoengine) || (mode == singlecomparison) || (mode == databasesearch) || (mode == dereplication)) { + errtype = calculateNeutralLosses(terminatecomputation, errormessage); + if (errtype == -1) { + error = true; + } + } + else if (mode == compoundsearch) { + errtype = generateCompounds(terminatecomputation, errormessage); // uses ionsfortheoreticalspectra + if (errtype == -1) { + error = true; + } + } + } + + + // report errors and return + if (error) { + if (os) { + *os << endl << endl; + *os << "Error: " << errormessage.c_str() << endl; + *os << endl; + *os << endl; + } + return -1; + } + + + return 0; +} + + +bool cParameters::checkModifications(cSequence& sequence, int& startmodifid, int& endmodifid, int& middlemodifid, string& errormessage) { + startmodifid = 0; + endmodifid = 0; + middlemodifid = 0; + errormessage = ""; + + if ((sequence.getPeptideType() == linear) || (sequence.getPeptideType() == branched) || (sequence.getPeptideType() == branchcyclic) || (sequence.getPeptideType() == linearpolyketide)) { + + if ((sequence.getPeptideType() == linear) || (sequence.getPeptideType() == branched) || (sequence.getPeptideType() == linearpolyketide)) { + startmodifid = -1; + endmodifid = -1; + } if ((sequence.getPeptideType() == branched) || (sequence.getPeptideType() == branchcyclic)) { middlemodifid = -1; @@ -835,20 +1102,23 @@ string cParameters::printToString() { s += "Mode: "; switch ((eModeType)mode) { - case denovoengine: - s += "De Novo Search Engine"; - break; - case singlecomparison: - s += "Compare Peaklist(s) with Spectrum of Searched Sequence"; - break; - case databasesearch: - s += "Compare Peaklist with Database - MS/MS data"; - break; - case dereplication: - s += "Compare Peaklist(s) with Database - MS or MSI data"; - break; - default: - break; + case denovoengine: + s += "De Novo Search Engine - MS/MS"; + break; + case singlecomparison: + s += "Compare Peaklist(s) with Spectrum of Searched Sequence - MS/MS"; + break; + case databasesearch: + s += "Compare Peaklist with Database - MS/MS"; + break; + case dereplication: + s += "Compare Peaklist(s) with Database - MS, LC-MS, MSI"; + break; + case compoundsearch: + s += "Compound Search - MS, LC-MS, MSI"; + break; + default: + break; } s += "\n"; @@ -897,6 +1167,7 @@ string cParameters::printToString() { s += "Minimum Threshold of Relative Intensity: " + to_string(minimumrelativeintensitythreshold) + "\n"; s += "Minimum Threshold of Absolute Intensity: " + to_string(minimumabsoluteintensitythreshold) + "\n"; s += "Minimum m/z Ratio: " + to_string(minimummz) + "\n"; + s += "Maximum m/z Ratio: " + to_string(maximummz) + "\n"; s += "FWHM: " + to_string(fwhm) + "\n"; s += "Building Blocks Database File: " + bricksdatabasefilename + "\n"; s += "Maximum Number of Combined Blocks (start, middle, end): " + to_string(maximumbricksincombinationbegin) + ", " + to_string(maximumbricksincombinationmiddle) + ", " + to_string(maximumbricksincombinationend) + "\n"; @@ -981,7 +1252,7 @@ string cParameters::printToString() { } s += "\n"; - s += "Neutral Losses: "; + s += "Neutral Losses / Chemical Elements: "; for (int i = 0; i < (int)originalneutrallossesfortheoreticalspectra.size(); i++) { s += originalneutrallossesdefinitions[originalneutrallossesfortheoreticalspectra[i]].summary; if (i < (int)originalneutrallossesfortheoreticalspectra.size() - 1) { @@ -990,7 +1261,7 @@ string cParameters::printToString() { } s += "\n"; - s += "Maximum Number of Combined Neutral Losses: " + to_string(maximumcombinedlosses) + "\n"; + s += "Maximum Number of Combined Neutral Losses/Elements: " + to_string(maximumcombinedlosses) + "\n"; //s += "Remove Hits of Fragments without Hits of Parent Fragments: "; //s += clearhitswithoutparent ? "on" : "off"; @@ -1004,18 +1275,33 @@ string cParameters::printToString() { s += generateisotopepattern ? "on" : "off"; s += "\n"; - s += "Minimum Pattern Size: " + to_string(minimumpatternsize) + "\n"; + s += "Minimum Number of Isotopic Peaks: " + to_string(minimumpatternsize) + "\n"; + + s += "Minimum Number of Spectra: " + to_string(minimumfeaturesize) + "\n"; + + s += "Minimum Number of Ion Types: " + to_string(minimumiontypes) + "\n"; - s += "Minimum Feature Size: " + to_string(minimumfeaturesize) + "\n"; + s += "Basic Formula Check: "; + s += basicformulacheck ? "on" : "off"; + s += "\n"; + + s += "Advanced Formula Check: "; + s += advancedformulacheck ? "on" : "off"; + s += "\n"; - s += "All Ions Must be Annotated: "; - s += allionsmustbepresent ? "on" : "off"; + s += "N/O Ratio Check: "; + s += noratiocheck ? "on" : "off"; s += "\n"; + s += "Isotope m/z Tolerance: " + to_string(mzdifftolerance) + "\n"; + + s += "Isotope Intensity Tolerance: " + to_string(intensitytolerance) + "\n"; + s += "Searched Sequence: " + originalsearchedsequence + "\n"; s += "N-terminal Modification: " + searchedsequenceNtermmodif + "\n"; s += "C-terminal Modification: " + searchedsequenceCtermmodif + "\n"; s += "Branch Modification: " + searchedsequenceTmodif + "\n"; + s += "Formula: " + searchedsequenceformula + "\n"; s += "\n"; @@ -1051,21 +1337,24 @@ int cParameters::calculateNeutralLosses(bool& terminatecomputation, string& erro cSummaryFormula tmpformula; string tmpstring; neutralLoss loss; - int i; cBricksDatabase neutrallossesbrickdatabase; cBrick tmpbrick; + string tmpstr; + vector valences; + bool validvalences = false; + + vector limitsofelements; + vector countsofelements; + vector massesofelements; + int numberofbasicbricks = 0; - string compositionname; - vector intcomposition; + + double sumofmasses; int compressionlimit = 100000; bool compressformulas; - bool undefinedelement; - int valence; - int atomscount; - //int stringsizeest = 0; //int mapsizeest = 0; //int doublesizeest = 0; @@ -1075,13 +1364,20 @@ int cParameters::calculateNeutralLosses(bool& terminatecomputation, string& erro *os << "Calculating combinations of neutral losses... " << endl; } - for (i = 0; i < (int)originalneutrallossesfortheoreticalspectra.size(); i++) { - tmpformula.setFormula(originalneutrallossesdefinitions[originalneutrallossesfortheoreticalspectra[i]].summary, false); + for (int i = 0; i < (int)originalneutrallossesfortheoreticalspectra.size(); i++) { + tmpstr = originalneutrallossesdefinitions[originalneutrallossesfortheoreticalspectra[i]].summary; + + if (tmpstr.rfind(':') != string::npos) { + tmpstr = tmpstr.substr(0, tmpstr.rfind(':')); + } + + tmpformula.setFormula(tmpstr, false); tmpbrick.clear(); + tmpbrick.setName(originalneutrallossesdefinitions[originalneutrallossesfortheoreticalspectra[i]].summary); tmpbrick.setComposition(to_string(numberofbasicbricks + 1), false); tmpbrick.setMass(tmpformula.getMass()); - tmpbrick.setSummary(originalneutrallossesdefinitions[originalneutrallossesfortheoreticalspectra[i]].summary); + tmpbrick.setSummary(tmpstr); tmpbrick.createSummaryMap(); neutrallossesbrickdatabase.push_back(tmpbrick); @@ -1091,75 +1387,168 @@ int cParameters::calculateNeutralLosses(bool& terminatecomputation, string& erro neutrallossesbrickdatabase.sortbyMass(); + for (int i = 0; i < neutrallossesbrickdatabase.size(); i++) { + countsofelements.push_back(0); + massesofelements.push_back(neutrallossesbrickdatabase[i].getMass()); + + tmpstr = neutrallossesbrickdatabase[i].getName(); + if (tmpstr.rfind(':') != string::npos) { + tmpstr = tmpstr.substr(tmpstr.rfind(':') + 1); + limitsofelements.push_back(QVariant(tmpstr.c_str()).toInt()); + } + else { + limitsofelements.push_back(0); + } + + tmpstr = neutrallossesbrickdatabase[i].getSummary(); + + if (tmpstr.compare("H") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("C") == 0) { + valences.push_back(4); + } + + if (tmpstr.compare("O") == 0) { + valences.push_back(2); + } + + if (tmpstr.compare("N") == 0) { + valences.push_back(3); + } + + if (tmpstr.compare("S") == 0) { + valences.push_back(6); + } + + if (tmpstr.compare("P") == 0) { + valences.push_back(5); + } + + if (tmpstr.compare("Li") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Na") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("K") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("F") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Cl") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Br") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("I") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Si") == 0) { + valences.push_back(4); + } + } + + if (basicformulacheck && (neutrallossesbrickdatabase.size() > 0) && (neutrallossesbrickdatabase.size() == valences.size())) { + validvalences = true; + + if (os) { + *os << "Filtering using Senior's rules has been enabled." << endl; + } + } + vector combarray; - for (i = 0; i < maximumcombinedlosses; i++) { + for (int i = 0; i < maximumcombinedlosses; i++) { combarray.push_back(0); } map atoms; - map counts; vector max_counts; bool skipcombination; bool bruteforce = false; - if (mode == singlecomparison) { + if ((mode == singlecomparison) || (mode == databasesearch)) { - bruteforce = true; - for (i = 0; i < neutrallossesbrickdatabase.size(); i++) { - if (neutrallossesbrickdatabase[i].getSummaryMap().size() == 1) { - auto it = neutrallossesbrickdatabase[i].getSummaryMap().begin(); - if (it->second != 1) { + if ((peptidetype == other) && (neutrallossesbrickdatabase.size() > 0)) { + + bruteforce = true; + for (int i = 0; i < neutrallossesbrickdatabase.size(); i++) { + if (neutrallossesbrickdatabase[i].getSummaryMap().size() == 1) { + auto it = neutrallossesbrickdatabase[i].getSummaryMap().begin(); + if (it->second != 1) { + bruteforce = false; + break; + } + } + else { bruteforce = false; break; } } - else { - bruteforce = false; - break; - } + } + } + + if (mode == singlecomparison) { + // calculate molecular formula of searched sequence if (bruteforce) { *os << "Brute force fragmentation enabled. Maximum numbers of elements: " << endl; - string upperboundsequence = searchedsequence; - - if (!checkRegex(peptidetype, upperboundsequence, errormessage)) { - return -1; + string formulastr; + if (peptidetype == other) { + formulastr = searchedsequenceformula; } + else { + string upperboundsequence = searchedsequence; - if (!bricksdatabase.replaceAcronymsByIDs(upperboundsequence, errormessage)) { - return -1; - } + //if (!checkRegex(peptidetype, upperboundsequence, errormessage)) { + // return -1; + //} - cSequence tmpsequence; - tmpsequence.setNTterminalModification(searchedsequenceNtermmodif); - tmpsequence.setCTterminalModification(searchedsequenceCtermmodif); - tmpsequence.setBranchModification(searchedsequenceTmodif); - tmpsequence.setPeptideType(peptidetype); + //if (!bricksdatabase.replaceAcronymsByIDs(upperboundsequence, errormessage)) { + // return -1; + //} - int startmodifid, endmodifid, middlemodifid; - if (!checkModifications(tmpsequence, startmodifid, endmodifid, middlemodifid, errormessage)) { - return -1; - } + cSequence tmpsequence; + tmpsequence.setNTterminalModification(searchedsequenceNtermmodif); + tmpsequence.setCTterminalModification(searchedsequenceCtermmodif); + tmpsequence.setBranchModification(searchedsequenceTmodif); + tmpsequence.setPeptideType(peptidetype); - int branchstart, branchend; - vector v; - cCandidate c; - vector netmp; + int startmodifid, endmodifid, middlemodifid; + if (!checkModifications(tmpsequence, startmodifid, endmodifid, middlemodifid, errormessage)) { + return -1; + } + + int branchstart, branchend; + vector v; + cCandidate c; + vector netmp; - parseBranch(peptidetype, upperboundsequence, v, branchstart, branchend); - // startmodifid, endmodifid and middlemodifid were filled up by checkModifications - c.setCandidate(v, netmp, fragmentIonTypeEnd, startmodifid, endmodifid, middlemodifid, branchstart, branchend); - cSummaryFormula formula = c.calculateSummaryFormula(*this, peptidetype, precursormass); + parseBranch(peptidetype, upperboundsequence, v, branchstart, branchend); + // startmodifid, endmodifid and middlemodifid were filled up by checkModifications + c.setCandidate(v, netmp, fragmentIonTypeEnd, startmodifid, endmodifid, middlemodifid, branchstart, branchend); + cSummaryFormula formula = c.calculateSummaryFormulaFromBricks(*this, peptidetype, precursormass); + + formulastr = formula.getSummary(); + } - string formulastr = formula.getSummary(); addStringFormulaToMap(formulastr, atoms); - string tmpstr; - for (i = 0; i < neutrallossesbrickdatabase.size(); i++) { + for (int i = 0; i < neutrallossesbrickdatabase.size(); i++) { tmpstr = neutrallossesbrickdatabase[i].getSummary(); if (atoms.count(tmpstr) == 1) { max_counts.push_back(atoms[tmpstr]); @@ -1174,9 +1563,73 @@ int cParameters::calculateNeutralLosses(bool& terminatecomputation, string& erro } - i = 0; + if ((mode == databasesearch) && (peptidetype == other)) { + + if (bruteforce) { + + *os << "Brute force fragmentation enabled. Maximum numbers of elements: " << endl; + + for (int j = 0; j < neutrallossesbrickdatabase.size(); j++) { + max_counts.push_back(0); + } + + int i = 0; + while (i < sequencedatabase.size()) { + tmpformula.setFormula(sequencedatabase[i].getSummaryFormula()); + tmpstr = "H+"; + tmpformula.addFormula(tmpstr); + tmpstr = (precursorcharge > 0) ? "" : "H-2+-2"; + tmpformula.addFormula(tmpstr); + tmpstr = precursoradduct.empty() ? "" : "H-1"; + tmpformula.addFormula(tmpstr); + tmpstr = precursoradduct; + tmpformula.addFormula(tmpstr); + + if (similaritysearch || isInPpmMassErrorTolerance(charge(uncharge(precursormass, precursorcharge), (precursorcharge > 0) ? 1 : -1), tmpformula.getMass(), precursormasserrortolerance)) { + atoms.clear(); + tmpstr = tmpformula.getSummary(); + tmpstr += (precursorcharge > 0) ? "H-1+-1" : "H+"; + addStringFormulaToMap(tmpstr, atoms); + + for (int j = 0; j < neutrallossesbrickdatabase.size(); j++) { + tmpstr = neutrallossesbrickdatabase[j].getSummary(); + if ((atoms.count(tmpstr) == 1) && (atoms[tmpstr] > max_counts[j])) { + max_counts[j] = atoms[tmpstr]; + } + } + + i++; + } + else { + sequencedatabase.erase(i); + } + } + + for (int j = 0; j < neutrallossesbrickdatabase.size(); j++) { + tmpstr = neutrallossesbrickdatabase[j].getSummary(); + *os << tmpstr << ": " << max_counts[j] << endl; + } + + } + + } + + // to do - change to unsigned long long + int ii = 0; compressformulas = false; - while (neutrallossesbrickdatabase.nextCombination(combarray, numberofbasicbricks, maximumcombinedlosses, 0, uncharge(precursormass, precursorcharge) - minimummz)) { + + if (bruteforce && (peptidetype == other) && ((mode == databasesearch) || (mode == singlecomparison))) { + compressionlimit = 0; + compressformulas = true; + } + + double crop = uncharge(precursormass, precursorcharge) - minimummz; + if (mode == dereplication) { + crop = 0; + } + + //while (neutrallossesbrickdatabase.nextCombination(combarray, numberofbasicbricks, maximumcombinedlosses, 0, uncharge(precursormass, precursorcharge) - minimummz)) { + while (neutrallossesbrickdatabase.nextCombinationFastLimited(combarray, countsofelements, limitsofelements, massesofelements, sumofmasses, numberofbasicbricks, maximumcombinedlosses, 0, crop)) { if (terminatecomputation) { neutrallossesdefinitions.clear(); neutrallossesfortheoreticalspectra.clear(); @@ -1186,23 +1639,9 @@ int cParameters::calculateNeutralLosses(bool& terminatecomputation, string& erro } if (bruteforce) { - counts.clear(); - int cnt = 0; - for (int j = 0; j < maximumcombinedlosses; j++) { - if (combarray[j] == 0) { - break; - } - if (counts.count(combarray[j]) > 0) { - counts[combarray[j]]++; - } - else { - counts[combarray[j]] = 1; - } - } - skipcombination = false; - for (auto& it : counts) { - if (it.second > max_counts[it.first - 1]) { + for (int j = 0; j < numberofbasicbricks; j++) { + if (countsofelements[j] > max_counts[j]) { skipcombination = true; break; } @@ -1213,92 +1652,57 @@ int cParameters::calculateNeutralLosses(bool& terminatecomputation, string& erro } } - getNameOfCompositionFromIntVector(compositionname, combarray); - - tmpbrick.clear(); - tmpbrick.setComposition(compositionname, true); - tmpbrick.setMass(neutrallossesbrickdatabase.getMassOfComposition(combarray, numberofbasicbricks)); - - loss.clear(); - loss.massdifference = -tmpbrick.getMass(); - - intcomposition.clear(); - tmpbrick.explodeToIntComposition(intcomposition); - for (int j = 0; j < (int)intcomposition.size(); j++) { - loss.summary += neutrallossesbrickdatabase[intcomposition[j] - 1].getSummary(); + if (validvalences) { + if (!checkSeniorRules(combarray, valences, 10)) { + continue; + } } - tmpformula.clear(); - tmpformula.addFormula(loss.summary, true); - tmpstring = tmpformula.getSummary(); - addStringFormulaToMap(tmpstring, loss.summarymap); + loss.clear(); + loss.massdifference = -sumofmasses; - undefinedelement = false; - for (auto it = loss.summarymap.begin(); it != loss.summarymap.end(); ++it) { - if ((it->first.compare("H") != 0) && (it->first.compare("C") != 0) && (it->first.compare("O") != 0) && (it->first.compare("N") != 0) && (it->first.compare("S") != 0)) { - undefinedelement = true; + for (int j = 0; j < (int)combarray.size(); j++) { + if ((combarray[j] > 0) && (combarray[j] <= numberofbasicbricks)) { + loss.summary += neutrallossesbrickdatabase[combarray[j] - 1].getSummary(); + } + else { break; } } - valence = 0; - atomscount = 0; - if (loss.summarymap.count("H") > 0) { - valence += -loss.summarymap["H"]; - atomscount += -loss.summarymap["H"]; - } - if (loss.summarymap.count("C") > 0) { - valence += -loss.summarymap["C"] * 4; - atomscount += -loss.summarymap["C"]; - } - if (loss.summarymap.count("O") > 0) { - valence += -loss.summarymap["O"] * 2; - atomscount += -loss.summarymap["O"]; - } - if (loss.summarymap.count("N") > 0) { - valence += -loss.summarymap["N"] * 3; - atomscount += -loss.summarymap["N"]; - } - if (loss.summarymap.count("S") > 0) { - valence += -loss.summarymap["S"] * 6; /* the maximum valence state is used */ - atomscount += -loss.summarymap["S"]; - } - - // SENIOR rule 1 - the sum of valences must be even - // SENIOR rule 3 - the sum of valences >= 2 * (atomscount - maximum number of allowed components in the graph); edges - nodes + components >= 0 - if (!undefinedelement && ((valence % 2 == 1) || (valence < 2 * (atomscount - 10)))) { - //pruned++; - continue; - } - if (compressformulas) { tmpformula.clear(); tmpformula.addFormula(loss.summary); loss.summary = tmpformula.getSummary(); } + tmpformula.clear(); + tmpformula.addFormula(loss.summary, true); + tmpstring = tmpformula.getSummary(); + addStringFormulaToMap(tmpstring, loss.summarymap); + //stringsizeest += sizeof(string) + loss.summary.size(); //mapsizeest += sizeof(loss.summarymap) + loss.summarymap.size() * (sizeof(string) /* the length of string is 1 for HCONS */ + sizeof(int)); //doublesizeest += sizeof(double); neutrallossesdefinitions.push_back(loss); - neutrallossesfortheoreticalspectra.push_back(i); + neutrallossesfortheoreticalspectra.push_back(ii); - i++; + ii++; - if (i == compressionlimit) { + if (ii == compressionlimit) { compressformulas = true; } - if (i % 100000 == 0) { + if (ii % 100000 == 0) { if (os) { - *os << i << " "; + *os << ii << " "; } - //cout << i << " " << pruned << " - " << stringsizeest << " " << mapsizeest << " " << doublesizeest << " " << stringsizeest + mapsizeest + doublesizeest << endl; + //cout << ii << " " << pruned << " - " << stringsizeest << " " << mapsizeest << " " << doublesizeest << " " << stringsizeest + mapsizeest + doublesizeest << endl; } - if (i % 1000000 == 0) { + if (ii % 1000000 == 0) { if (os) { *os << endl; } @@ -1332,6 +1736,701 @@ int cParameters::calculateNeutralLosses(bool& terminatecomputation, string& erro } +int cParameters::generateCompounds(bool& terminatecomputation, string& errormessage) { + sequencedatabase.clear(); + unsigned long long compoundsgenerated = 0; + unsigned long long compoundsused = 0; + unsigned long long compoundslimit = 5000000; + + errormessage = ""; + + if (maximumcombinedlosses == 0) { + return 0; + } + + cSequence seq; + cSummaryFormula tmpformula; + int size; + + cBricksDatabase elementsbrickdatabase; + cBrick tmpbrick; + string tmpstr, tmpstr2; + vector valences; + bool validvalences = false; + + vector limitsofelements; + vector countsofelements; + vector massesofelements; + vector namesofelements; + double elementsratio; + + int numberofbasicbricks = 0; + + double sumofmasses; + double tmpmzdifference; + bool alloutofmz; + int featureshint; + int compoundshint; + bool hintend; + + double minadd = 0; + //double maxadd = 0; + + int countH; + int countC; + int countO; + int countN; + int countS; + int countP; + int countF; + int countCl; + int countBr; + int countSi; + + bool lcms = (peaklistseries.size() > 1) && !((peaklistfileformat == mis) || (peaklistfileformat == imzML)); + + if (os) { + *os << "Generating compounds... " << endl; + } + + for (int i = 0; i < (int)originalneutrallossesfortheoreticalspectra.size(); i++) { + tmpstr = originalneutrallossesdefinitions[originalneutrallossesfortheoreticalspectra[i]].summary; + + if (tmpstr.rfind(':') != string::npos) { + tmpstr = tmpstr.substr(0, tmpstr.rfind(':')); + } + + tmpformula.setFormula(tmpstr, false); + + tmpbrick.clear(); + tmpbrick.setName(originalneutrallossesdefinitions[originalneutrallossesfortheoreticalspectra[i]].summary); + tmpbrick.setComposition(to_string(numberofbasicbricks + 1), false); + tmpbrick.setMass(tmpformula.getMass()); + tmpbrick.setSummary(tmpstr); + tmpbrick.createSummaryMap(); + + if ((tmpbrick.getSummaryMap().size() != 1)) { + errormessage = "Bad input element: " + tmpstr + ". Only single elements can be used in this mode e.g. H, C, O, N, P, S."; + return -1; + } + else { + auto it = tmpbrick.getSummaryMap().begin(); + if (it->second != 1) { + errormessage = "Bad input element: " + tmpstr + ". Only single elements can be used in this mode e.g. H, C, O, N, P, S."; + return -1; + } + } + + elementsbrickdatabase.push_back(tmpbrick); + + numberofbasicbricks++; + } + + elementsbrickdatabase.sortbyMass(); + + int carbonpos = -1; + //bool enablelimitfilter = false; + for (int i = 0; i < elementsbrickdatabase.size(); i++) { + countsofelements.push_back(0); + massesofelements.push_back(elementsbrickdatabase[i].getMass()); + + tmpstr = elementsbrickdatabase[i].getName(); + if (tmpstr.rfind(':') != string::npos) { + tmpstr = tmpstr.substr(tmpstr.rfind(':') + 1); + limitsofelements.push_back(QVariant(tmpstr.c_str()).toInt()); + //enablelimitfilter = true; + } + else { + limitsofelements.push_back(0); + } + + tmpstr = elementsbrickdatabase[i].getSummary(); + namesofelements.push_back(tmpstr); + + if (tmpstr.compare("C") == 0) { + carbonpos = i; + } + + if (tmpstr.compare("H") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("C") == 0) { + valences.push_back(4); + } + + if (tmpstr.compare("O") == 0) { + valences.push_back(2); + } + + if (tmpstr.compare("N") == 0) { + valences.push_back(3); + } + + if (tmpstr.compare("S") == 0) { + valences.push_back(6); + } + + if (tmpstr.compare("P") == 0) { + valences.push_back(5); + } + + if (tmpstr.compare("Li") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Na") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("K") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("F") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Cl") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Br") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("I") == 0) { + valences.push_back(1); + } + + if (tmpstr.compare("Si") == 0) { + valences.push_back(4); + } + } + + if (basicformulacheck && (elementsbrickdatabase.size() > 0) && (elementsbrickdatabase.size() == valences.size())) { + validvalences = true; + } + + vector combarray; + for (int i = 0; i < maximumcombinedlosses; i++) { + combarray.push_back(0); + } + + if (ionsfortheoreticalspectra.size() > 0) { + minadd = iondefinitions[ionsfortheoreticalspectra[0]].massdifference; + //maxadd = iondefinitions[ionsfortheoreticalspectra[0]].massdifference; + for (int i = 1; i < (int)ionsfortheoreticalspectra.size(); i++) { + if (iondefinitions[ionsfortheoreticalspectra[i]].massdifference < minadd) { + minadd = iondefinitions[ionsfortheoreticalspectra[i]].massdifference; + } + //if (iondefinitions[ionsfortheoreticalspectra[i]].massdifference > maxadd) { + // maxadd = iondefinitions[ionsfortheoreticalspectra[i]].massdifference; + //} + } + } + + //bool skipcombination; + //while (elementsbrickdatabase.nextCombinationFast(combarray, countsofelements, massesofelements, sumofmasses, numberofbasicbricks, maximumcombinedlosses, 0, maximummz)) { + while (elementsbrickdatabase.nextCombinationFastLimited(combarray, countsofelements, limitsofelements, massesofelements, sumofmasses, numberofbasicbricks, maximumcombinedlosses, 0, maximummz - minadd)) { + if (terminatecomputation) { + sequencedatabase.clear(); + errormessage = "Aborted by user."; + return -1; + } + + /*if (enablelimitfilter) { + skipcombination = false; + size = (int)countsofelements.size(); + for (int j = 0; j < size; j++) { + if ((limitsofelements[j] > 0) && (countsofelements[j] > limitsofelements[j])) { + skipcombination = true; + break; + } + } + + if (skipcombination) { + continue; + } + }*/ + + if (validvalences) { + if (!checkSeniorRules(combarray, valences, 1)) { + continue; + } + } + + //sumofmasses = getMassAndCounts(combarray, countsofelements, massesofelements); + + alloutofmz = true; + for (auto& it : ionsfortheoreticalspectra) { + for (int j = 0; j < abs(precursorcharge); j++) { + tmpmzdifference = sumofmasses + iondefinitions[it].massdifference; + if (precursorcharge > 0) { + tmpmzdifference += j * (H - e); + } + else { + tmpmzdifference -= j * (H - e); + } + if (j > 0) { + tmpmzdifference /= (double)(j + 1); + } + if ((tmpmzdifference >= minimummz) && (tmpmzdifference <= maximummz)) { + alloutofmz = false; + } + } + } + + if (alloutofmz) { + continue; + } + + if (advancedformulacheck) { + + countH = 0; + countC = 0; + countO = 0; + countN = 0; + countS = 0; + countP = 0; + countF = 0; + countCl = 0; + countBr = 0; + countSi = 0; + + size = (int)countsofelements.size(); + for (int j = 0; j < size; j++) { + if (countsofelements[j] > 0) { + if (namesofelements[j].compare("H") == 0) { + countH = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("C") == 0) { + countC = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("O") == 0) { + countO = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("N") == 0) { + countN = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("S") == 0) { + countS = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("P") == 0) { + countP = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("F") == 0) { + countF = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("Cl") == 0) { + countCl = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("Br") == 0) { + countBr = countsofelements[j]; + continue; + } + if (namesofelements[j].compare("Si") == 0) { + countSi = countsofelements[j]; + continue; + } + } + } + + if ((countH == 0) || (countC == 0)) { + continue; + } + + if (noratiocheck) { + if (countN > countO) { + continue; + } + } + + if (sumofmasses < 500.0) { + + if (countC > 39) { + continue; + } + if (countH > 72) { + continue; + } + if (countN > 20) { + continue; + } + if (countO > 20) { + continue; + } + if (countP > 9) { + continue; + } + if (countS > 10) { + continue; + } + if (countF > 16) { + continue; + } + if (countCl > 10) { + continue; + } + if (countBr > 5) { + continue; + } + if (countSi > 8) { + continue; + } + + } + else if (sumofmasses < 1000.0) { + + if (countC > 78) { + continue; + } + if (countH > 126) { + continue; + } + if (countN > 25) { + continue; + } + if (countO > 27) { + continue; + } + if (countP > 9) { + continue; + } + if (countS > 14) { + continue; + } + if (countF > 34) { + continue; + } + if (countCl > 12) { + continue; + } + if (countBr > 8) { + continue; + } + if (countSi > 14) { + continue; + } + + } + else if (sumofmasses < 2000.0) { + + if (countC > 156) { + continue; + } + if (countH > 236) { + continue; + } + if (countN > 32) { + continue; + } + if (countO > 63) { + continue; + } + if (countP > 9) { + continue; + } + if (countS > 14) { + continue; + } + if (countF > 48) { + continue; + } + if (countCl > 12) { + continue; + } + if (countBr > 10) { + continue; + } + if (countSi > 15) { + continue; + } + + } + else if (sumofmasses < 3000.0) { + + if (countC > 162) { + continue; + } + if (countH > 208) { + continue; + } + if (countN > 48) { + continue; + } + if (countO > 78) { + continue; + } + if (countP > 9) { + continue; + } + if (countS > 14) { + continue; + } + if (countF > 48) { + continue; + } + if (countCl > 12) { + continue; + } + if (countBr > 10) { + continue; + } + if (countSi > 15) { + continue; + } + + } + + if ((countH > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countH)) / ((double)(countC)); + if ((elementsratio < 0.2) || (elementsratio > 3.1)) { + continue; + } + } + + if ((countN > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countN)) / ((double)(countC)); + if (elementsratio > 1.3) { + continue; + } + } + + if ((countO > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countO)) / ((double)(countC)); + if (elementsratio > 1.2) { + continue; + } + } + + if ((countP > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countP)) / ((double)(countC)); + if (elementsratio > 0.3) { + continue; + } + } + + if ((countS > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countS)) / ((double)(countC)); + if (elementsratio > 0.8) { + continue; + } + } + + if ((countF > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countF)) / ((double)(countC)); + if (elementsratio > 1.5) { + continue; + } + } + + if ((countCl > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countCl)) / ((double)(countC)); + if (elementsratio > 0.8) { + continue; + } + } + + if ((countBr > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countBr)) / ((double)(countC)); + if (elementsratio > 0.8) { + continue; + } + } + + if ((countSi > 0) && (countC >= 0)) { + if (countC == 0) { + continue; + } + elementsratio = ((double)(countSi)) / ((double)(countC)); + if (elementsratio > 0.5) { + continue; + } + } + + if ((countN > 1) && (countO > 1) && (countP > 1) && (countS > 1)) { + if ((countN >= 10) || (countO >= 20) || (countP >= 4) || (countS >= 3)) { + continue; + } + } + + if ((countN > 3) && (countO > 3) && (countP > 3)) { + if ((countN >= 11) || (countO >= 22) || (countP >= 6)) { + continue; + } + } + + if ((countO > 1) && (countP > 1) && (countS > 1)) { + if ((countO >= 14) || (countP >= 3) || (countS >= 3)) { + continue; + } + } + + if ((countP > 1) && (countS > 1) && (countN > 1)) { + if ((countP >= 3) || (countS >= 3) || (countN >= 4)) { + continue; + } + } + + if ((countN > 6) && (countO > 6) && (countS > 6)) { + if ((countN >= 19) || (countO >= 14) || (countS >= 8)) { + continue; + } + } + + } + + compoundsgenerated++; + + if (!reportunmatchedtheoreticalpeaks) { + + compoundshint = 0; + + for (auto& it : ionsfortheoreticalspectra) { + + for (int j = 0; j < abs(precursorcharge); j++) { + + tmpmzdifference = sumofmasses + iondefinitions[it].massdifference; + if (precursorcharge > 0) { + tmpmzdifference += j * (H - e); + } + else { + tmpmzdifference -= j * (H - e); + } + if (j > 0) { + tmpmzdifference /= (double)(j + 1); + } + + featureshint = 0; + + size = peaklistseries.size(); + for (int k = 0; k < size; k++) { + + if (searchHint(tmpmzdifference, peaklistseries[k], fragmentmasserrortolerance)) { + featureshint++; + } + else { + if (lcms) { + featureshint = 0; + } + } + + hintend = false; + if (lcms || (peaklistfileformat == imzML) || (peaklistfileformat == mis)) { + if (featureshint >= minimumfeaturesize) { + compoundshint++; + hintend = true; + } + } + else { + if (featureshint > 0) { + compoundshint++; + hintend = true; + } + } + + if (hintend) { + break; + } + + } + + if (compoundshint >= minimumiontypes) { + break; + } + + } + + if (compoundshint >= minimumiontypes) { + break; + } + + } + + if (compoundshint < minimumiontypes) { + continue; + } + + } + + tmpstr.clear(); + tmpstr2.clear(); + size = (int)countsofelements.size(); + for (int j = 0; j < size; j++) { + if (countsofelements[j] > 0) { + if (j == carbonpos) { + tmpstr2 = namesofelements[j] + to_string(countsofelements[j]); + } + else { + tmpstr += namesofelements[j] + to_string(countsofelements[j]); + } + } + } + tmpstr = tmpstr2 + tmpstr; + + seq.setName(tmpstr); + seq.setSummaryFormula(tmpstr); + if (compoundsused <= compoundslimit) { + sequencedatabase.push_back(seq); + } + compoundsused++; + + if (compoundsused % 100000 == 0) { + if (os) { + *os << compoundsused << " "; + } + } + + if (compoundsused % 1000000 == 0) { + if (os) { + *os << endl; + } + } + } + + if (os) { + *os << "ok" << endl; + *os << "Number of generated compounds: " << compoundsgenerated << endl; + *os << "Number of used compounds: " << compoundsused << endl << endl; + } + + return 0; +} + + void cParameters::store(ofstream& os) { int size; string s; @@ -1361,6 +2460,7 @@ void cParameters::store(ofstream& os) { os.write((char *)&minimumrelativeintensitythreshold, sizeof(double)); os.write((char *)&minimumabsoluteintensitythreshold, sizeof(unsigned)); os.write((char *)&minimummz, sizeof(double)); + os.write((char *)&maximummz, sizeof(double)); os.write((char *)&fwhm, sizeof(double)); storeString(bricksdatabasefilename, os); @@ -1388,7 +2488,12 @@ void cParameters::store(ofstream& os) { os.write((char *)&generateisotopepattern, sizeof(bool)); os.write((char *)&minimumpatternsize, sizeof(int)); os.write((char *)&minimumfeaturesize, sizeof(int)); - os.write((char *)&allionsmustbepresent, sizeof(bool)); + os.write((char *)&minimumiontypes, sizeof(int)); + os.write((char *)&basicformulacheck, sizeof(bool)); + os.write((char *)&advancedformulacheck, sizeof(bool)); + os.write((char *)&noratiocheck, sizeof(bool)); + os.write((char *)&mzdifftolerance, sizeof(double)); + os.write((char *)&intensitytolerance, sizeof(double)); os.write((char *)&cyclicnterminus, sizeof(bool)); os.write((char *)&cycliccterminus, sizeof(bool)); os.write((char *)&internalfragments, sizeof(bool)); @@ -1404,6 +2509,7 @@ void cParameters::store(ofstream& os) { storeString(searchedsequenceNtermmodif, os); storeString(searchedsequenceCtermmodif, os); storeString(searchedsequenceTmodif, os); + storeString(searchedsequenceformula, os); os.write((char *)&maximumnumberofcandidates, sizeof(int)); os.write((char *)&blindedges, sizeof(int)); @@ -1491,6 +2597,7 @@ void cParameters::load(ifstream& is) { is.read((char *)&minimumrelativeintensitythreshold, sizeof(double)); is.read((char *)&minimumabsoluteintensitythreshold, sizeof(unsigned)); is.read((char *)&minimummz, sizeof(double)); + is.read((char *)&maximummz, sizeof(double)); is.read((char *)&fwhm, sizeof(double)); loadString(bricksdatabasefilename, is); @@ -1518,7 +2625,12 @@ void cParameters::load(ifstream& is) { is.read((char *)&generateisotopepattern, sizeof(bool)); is.read((char *)&minimumpatternsize, sizeof(int)); is.read((char *)&minimumfeaturesize, sizeof(int)); - is.read((char *)&allionsmustbepresent, sizeof(bool)); + is.read((char *)&minimumiontypes, sizeof(int)); + is.read((char *)&basicformulacheck, sizeof(bool)); + is.read((char *)&advancedformulacheck, sizeof(bool)); + is.read((char *)&noratiocheck, sizeof(bool)); + is.read((char *)&mzdifftolerance, sizeof(double)); + is.read((char *)&intensitytolerance, sizeof(double)); is.read((char *)&cyclicnterminus, sizeof(bool)); is.read((char *)&cycliccterminus, sizeof(bool)); is.read((char *)&internalfragments, sizeof(bool)); @@ -1534,6 +2646,7 @@ void cParameters::load(ifstream& is) { loadString(searchedsequenceNtermmodif, is); loadString(searchedsequenceCtermmodif, is); loadString(searchedsequenceTmodif, is); + loadString(searchedsequenceformula, is); is.read((char *)&maximumnumberofcandidates, sizeof(int)); is.read((char *)&blindedges, sizeof(int)); diff --git a/CycloBranch/core/cParameters.h b/CycloBranch/core/cParameters.h index e1c9606..30f6811 100644 --- a/CycloBranch/core/cParameters.h +++ b/CycloBranch/core/cParameters.h @@ -58,6 +58,13 @@ class cParameters { cMainThread* os; + void fixIntensities(cPeaksList& centroidspectrum, cPeaksList& profilespectrum); + + bool checkSeniorRules(vector& combarray, vector& valences, int maxcomponents); + + //double getMassAndCounts(vector& combarray, vector& countsofelements, vector& massesofelements); + + public: @@ -164,11 +171,17 @@ class cParameters { /** - \brief Minimum mz. + \brief Minimum m/z ratio. */ double minimummz; + /** + \brief Maximum m/z ratio. + */ + double maximummz; + + /** \brief FWHM. */ @@ -278,9 +291,39 @@ class cParameters { /** - \brief If true, all ions must be annotated in a spectrum for a compound to be reported. + \brief The minimum number of ion types which must be matched to report a given compound. + */ + int minimumiontypes; + + + /** + \brief Apply Senior's filtering rules. */ - bool allionsmustbepresent; + bool basicformulacheck; + + + /** + \brief Advanced filtering rules are aplied if compounds are generated in MS mode. + */ + bool advancedformulacheck; + + + /** + \brief Check N/O ratio. + */ + bool noratiocheck; + + + /** + \brief Maximum m/z tolerance of matched isotopes. + */ + double mzdifftolerance; + + + /** + \brief Maximum tolerance of intensities of matched isotopes. + */ + double intensitytolerance; /** @@ -367,6 +410,12 @@ class cParameters { string searchedsequenceTmodif; + /** + \brief Formula of searched sequence. + */ + string searchedsequenceformula; + + /** \brief Maximum number of peptide sequence candidates. */ @@ -501,6 +550,14 @@ class cParameters { int checkAndPrepare(bool& terminatecomputation); + /** + \brief Prepare neutral losses and compounds. + \param terminatecomputation reference to a variable determining that the computation must be stopped + \retval int -1 when an error occurred, 0 otherwise + */ + int prepareLossesAndCompounds(bool& terminatecomputation); + + /** \brief Check if the names of modifications used in a sequence are correct. \param sequence an input sequence @@ -542,6 +599,15 @@ class cParameters { int calculateNeutralLosses(bool& terminatecomputation, string& errormessage); + /** + \brief Generate compounds. + \param terminatecomputation reference to a variable determining that the computation must be stopped + \param errormessage an error message if failed + \retval int -1 when an error occurred, 0 otherwise + */ + int generateCompounds(bool& terminatecomputation, string& errormessage); + + /** \brief Store the structure into an output stream. \param os an output stream diff --git a/CycloBranch/core/cPeakListSeries.cpp b/CycloBranch/core/cPeakListSeries.cpp index a415483..5c4b937 100644 --- a/CycloBranch/core/cPeakListSeries.cpp +++ b/CycloBranch/core/cPeakListSeries.cpp @@ -106,7 +106,7 @@ int cPeakListSeries::loadFromProfileApexStream(string& filename, ifstream &strea mgfofstream << "BEGIN IONS" << endl; mgfofstream << "TITLE=" << title << endl; - mgfofstream << "SCAN=" << to_string(count + 1) << endl; + mgfofstream << "SCANS=" << to_string(count + 1) << endl; mgfofstream << "PEPMASS=1" << endl; mgfofstream << "RTINSECONDS=1" << endl; mgfofstream << "CHARGE=1+" << endl << endl; @@ -186,7 +186,7 @@ int cPeakListSeries::loadFromMZMLStream(string& mzmlfilename, ifstream &mzmlstre *os << "Loading the mzML file, spectrum no. : "; cMzML mzml; - int resultcode = mzml.parse(mzmlfilename, peaklists, mode, os, terminatecomputation); + int resultcode = mzml.parse(mzmlfilename, peaklists, -1, mode, os, terminatecomputation); if (resultcode != 0) { peaklists.clear(); return resultcode; @@ -199,7 +199,7 @@ int cPeakListSeries::loadFromMZMLStream(string& mzmlfilename, ifstream &mzmlstre string mgfname = mzmlfilename.substr(0, (int)mzmlfilename.size() - 4); *os << "ok" << endl; - if (mode == dereplication) { + if ((mode == dereplication) || (mode == compoundsearch)) { *os << "Total number of MS spectra: "; } else { @@ -253,7 +253,7 @@ int cPeakListSeries::loadFromMZMLStream(string& mzmlfilename, ifstream &mzmlstre else { *os << "ok" << endl; - if (mode == dereplication) { + if ((mode == dereplication) || (mode == compoundsearch)) { *os << "Total number of MS spectra: "; } else { @@ -312,7 +312,7 @@ int cPeakListSeries::loadFromIMZMLStream(string& imzmlfilename, ifstream &ibdstr if (rawdata) { mgfofstream << "BEGIN IONS" << endl; mgfofstream << "TITLE=" << endl; - mgfofstream << "SCAN=" << to_string(i + 1) << endl; + mgfofstream << "SCANS=" << to_string(i + 1) << endl; mgfofstream << "PEPMASS=1" << endl; mgfofstream << "RTINSECONDS=1" << endl; mgfofstream << "CHARGE=1+" << endl << endl; diff --git a/CycloBranch/core/cPeaksList.cpp b/CycloBranch/core/cPeaksList.cpp index 22af4e8..548d059 100644 --- a/CycloBranch/core/cPeaksList.cpp +++ b/CycloBranch/core/cPeaksList.cpp @@ -18,6 +18,28 @@ double ppmError(double experimentalmass, double theoreticalmass) { } +bool searchHint(double mzratio, cPeaksList& experimentalpeaks, double fragmentmasserrortolerance) { + int left, right, middle; + int experimentalpeakssize = experimentalpeaks.size(); + + left = 0; + right = experimentalpeakssize - 1; + while (left <= right) { + middle = (left + right) / 2; + if (isInPpmMassErrorTolerance(experimentalpeaks[middle].mzratio, mzratio, fragmentmasserrortolerance)) { + return true; + } + if (mzratio < experimentalpeaks[middle].mzratio) { + right = middle - 1; + } + else { + left = middle + 1; + } + } + return false; +} + + cPeaksList::cPeaksList() { clear(); } @@ -30,6 +52,7 @@ cPeaksList::cPeaksList(const cPeaksList& peakslist) { cPeaksList& cPeaksList::operator=(const cPeaksList& peakslist) { peaks = peakslist.peaks; + rt = peakslist.rt; x = peakslist.x; y = peakslist.y; title = peakslist.title; @@ -39,6 +62,7 @@ cPeaksList& cPeaksList::operator=(const cPeaksList& peakslist) { void cPeaksList::clear() { peaks.clear(); + rt = 0; x = 0; y = 0; title = ""; @@ -203,7 +227,7 @@ void cPeaksList::storeToIBDStream(ofstream &ibdstream, bool use_64bit_float_mz_p void cPeaksList::loadFromMGFStream(ifstream &stream) { - string s; + string s, tmps; cPeak p; size_t pos; @@ -222,6 +246,17 @@ void cPeaksList::loadFromMGFStream(ifstream &stream) { if (s.substr(0, 6).compare("TITLE=") == 0) { title = s.substr(6); } + if (s.substr(0, 11).compare("RTINSECONDS") == 0) { + pos = s.find('='); + if (pos != string::npos) { + tmps = s.substr(pos + 1); + pos = tmps.find('-'); + if (pos != string::npos) { + tmps = tmps.substr(0, pos); + } + rt = atof(tmps.c_str()); + } + } } while (stream.good() && !(strstr(s.c_str(),"END IONS"))) { @@ -729,6 +764,17 @@ double cPeaksList::getMaximumAbsoluteIntensity() { } +void cPeaksList::setRetentionTime(double rt) { + this->rt = rt; +} + + + +double cPeaksList::getRetentionTime() { + return rt; +} + + void cPeaksList::setCoordinates(int x, int y) { this->x = x; this->y = y; @@ -755,6 +801,8 @@ void cPeaksList::store(ofstream& os) { peaks[i].store(os); } + os.write((char *)&rt, sizeof(double)); + os.write((char *)&x, sizeof(int)); os.write((char *)&y, sizeof(int)); @@ -772,6 +820,8 @@ void cPeaksList::load(ifstream& is) { peaks[i].load(is); } + is.read((char *)&rt, sizeof(double)); + is.read((char *)&x, sizeof(int)); is.read((char *)&y, sizeof(int)); diff --git a/CycloBranch/core/cPeaksList.h b/CycloBranch/core/cPeaksList.h index 28280d4..a8bb2c8 100644 --- a/CycloBranch/core/cPeaksList.h +++ b/CycloBranch/core/cPeaksList.h @@ -52,13 +52,27 @@ bool isInPpmMassErrorTolerance(double experimentalmass, double theoreticalmass, double ppmError(double experimentalmass, double theoreticalmass); +/** + \brief Check if an m/z ratio exists in an experimental spectrum. + \param mzratio theoretical m/z ratio + \param experimentalpeaks an input experimental spectrum (sorted in ascending order) + \param fragmentmasserrortolerance m/z error tolerance + \retval true if the theoretical m/z ratio was mathed; false otherwise +*/ +bool searchHint(double mzratio, cPeaksList& experimentalpeaks, double fragmentmasserrortolerance); + + /** \brief The class representing a peak list. */ class cPeaksList { vector peaks; + + double rt; + int x, y; + string title; public: @@ -359,6 +373,20 @@ class cPeaksList { double getMaximumAbsoluteIntensity(); + /** + \brief Set the retention time. + \param rt retention time + */ + void setRetentionTime(double rt); + + + /** + \brief Get the retention time. + \retval double retention time + */ + double getRetentionTime(); + + /** \brief Set the coordinates. \param x X coordinate diff --git a/CycloBranch/core/cSequence.cpp b/CycloBranch/core/cSequence.cpp index 872f63c..f9a002e 100644 --- a/CycloBranch/core/cSequence.cpp +++ b/CycloBranch/core/cSequence.cpp @@ -117,8 +117,16 @@ string& cSequence::getBranchModification() { string cSequence::getNameWithReferenceAsHTMLString() { - regex rx; + // performance improvement - quick return without regex_search string s = ""; + if (reference.empty()) { + s += ""; + s += name; + s += ""; + return s; + } + + regex rx; bool correctreference = false; try { @@ -127,7 +135,7 @@ string cSequence::getNameWithReferenceAsHTMLString() { if (!correctreference) { rx = "^CSID: [0-9]+$"; if (regex_search(reference, rx)) { - s += ""; + s += ""; s += name; s += ""; correctreference = true; @@ -138,7 +146,18 @@ string cSequence::getNameWithReferenceAsHTMLString() { if (!correctreference) { rx = "^CID: [0-9]+$"; if (regex_search(reference, rx)) { - s += ""; + s += ""; + s += name; + s += ""; + correctreference = true; + } + } + + // ChEBI + if (!correctreference) { + rx = "^CHEBI: [0-9]+$"; + if (regex_search(reference, rx)) { + s += ""; s += name; s += ""; correctreference = true; @@ -149,7 +168,7 @@ string cSequence::getNameWithReferenceAsHTMLString() { if (!correctreference) { rx = "^NOR[0-9]+$"; if (regex_search(reference, rx)) { - s += ""; + s += ""; s += name; s += ""; correctreference = true; @@ -160,7 +179,7 @@ string cSequence::getNameWithReferenceAsHTMLString() { if (!correctreference) { rx = "^LM([A-Z]|[0-9])+$"; if (regex_search(reference, rx)) { - s += ""; + s += ""; s += name; s += ""; correctreference = true; @@ -171,7 +190,7 @@ string cSequence::getNameWithReferenceAsHTMLString() { if (!correctreference) { rx = "^C[0-9]{5}$"; if (regex_search(reference, rx)) { - s += ""; + s += ""; s += name; s += ""; correctreference = true; @@ -200,6 +219,28 @@ string cSequence::getNameWithReferenceAsHTMLString() { } } + // Siderophore Base (undocumented) + if (!correctreference) { + rx = "^SB: [0-9]+$"; + if (regex_search(reference, rx)) { + s += ""; + s += name; + s += ""; + correctreference = true; + } + } + + // MIBIG (undocumented) + if (!correctreference) { + rx = "^MIBIG: BGC[0-9]+$"; + if (regex_search(reference, rx)) { + s += ""; + s += name; + s += ""; + correctreference = true; + } + } + // DOI if (!correctreference) { rx = "^DOI: "; @@ -217,7 +258,9 @@ string cSequence::getNameWithReferenceAsHTMLString() { } if (!correctreference) { - s = name; + s += ""; + s += name; + s += ""; } return s; diff --git a/CycloBranch/core/cSequenceDatabase.cpp b/CycloBranch/core/cSequenceDatabase.cpp index a547ade..e0472df 100644 --- a/CycloBranch/core/cSequenceDatabase.cpp +++ b/CycloBranch/core/cSequenceDatabase.cpp @@ -157,6 +157,13 @@ void cSequenceDatabase::push_back(cSequence& sequence) { } +void cSequenceDatabase::erase(int index) { + if ((index >= 0) && (index < (int)sequences.size())) { + sequences.erase(sequences.begin() + index); + } +} + + void cSequenceDatabase::store(ofstream& os) { int size; diff --git a/CycloBranch/core/cSequenceDatabase.h b/CycloBranch/core/cSequenceDatabase.h index 217f1b9..5d7e7bd 100644 --- a/CycloBranch/core/cSequenceDatabase.h +++ b/CycloBranch/core/cSequenceDatabase.h @@ -79,6 +79,13 @@ class cSequenceDatabase { void push_back(cSequence& sequence); + /** + \brief Erase a sequence. + \param index index of a sequence + */ + void erase(int index); + + /** \brief Store the structure into an output stream. \param os an output stream diff --git a/CycloBranch/core/cSummaryFormula.cpp b/CycloBranch/core/cSummaryFormula.cpp index e2cdfc5..c558dd7 100644 --- a/CycloBranch/core/cSummaryFormula.cpp +++ b/CycloBranch/core/cSummaryFormula.cpp @@ -139,10 +139,11 @@ void rechargeMap(int charge, map& atoms) { } -void cSummaryFormula::combineAtoms(cPeakListSeries& peaklistseries, cPeaksList& isotopeprofile, int depth, double mass, double intensity, int charge, string description, double minimumabsoluteintensity) { - if (depth < peaklistseries.size()) { - for (int i = 0; i < peaklistseries[depth].size(); i++) { - combineAtoms(peaklistseries, isotopeprofile, depth + 1, mass + peaklistseries[depth][i].mzratio, intensity * peaklistseries[depth][i].absoluteintensity, charge, description + peaklistseries[depth][i].description, minimumabsoluteintensity); +void cSummaryFormula::combineAtoms(cPeakListSeries& peaklistseries, int peaklistseriessize, vector& peaklistseriessizes, cPeaksList& isotopeprofile, vector& depthvector, int depth, double mass, double intensity, int charge, double minimumabsoluteintensity) { + if (depth < peaklistseriessize) { + for (int i = 0; i < peaklistseriessizes[depth]; i++) { + depthvector[depth] = i; + combineAtoms(peaklistseries, peaklistseriessize, peaklistseriessizes, isotopeprofile, depthvector, depth + 1, mass + peaklistseries[depth][i].mzratio, intensity * peaklistseries[depth][i].absoluteintensity, charge, minimumabsoluteintensity); } } else { @@ -150,7 +151,9 @@ void cSummaryFormula::combineAtoms(cPeakListSeries& peaklistseries, cPeaksList& cPeak p; p.mzratio = mass/(double)charge; p.absoluteintensity = intensity; - p.description = description; + for (int i = 0; i < peaklistseriessize; i++) { + p.description += peaklistseries[i][depthvector[i]].description; + } isotopeprofile.add(p); } } @@ -216,7 +219,9 @@ void cSummaryFormula::getIsotopeSummary(string& description, cBricksDatabase& br if (isotopesummary[i] != 0) { description += bricks[i].getSummary(); if ((isotopesummary[i] != 1)) { - description += "" + to_string(isotopesummary[i]) + ""; + //description += ""; + description += to_string(isotopesummary[i]); + //description += ""; } description += " "; } @@ -579,8 +584,19 @@ cPeaksList cSummaryFormula::getIsotopePattern(double fwhm, int charge, bool posi peaklistseries.addPeakList(peaklist); } + int peaklistseriessize = peaklistseries.size(); + + vector peaklistseriessizes; + peaklistseriessizes.resize(peaklistseriessize); + for (int i = 0; i < peaklistseriessize; i++) { + peaklistseriessizes[i] = peaklistseries[i].size(); + } + + vector depthvector; + depthvector.resize(peaklistseriessize); + cPeaksList isotopeprofile; - combineAtoms(peaklistseries, isotopeprofile, 0, 0, 1, charge, "", 0.00001); + combineAtoms(peaklistseries, peaklistseriessize, peaklistseriessizes, isotopeprofile, depthvector, 0, 0, 1, charge, 0.00001); isotopeprofile.normalizeIntenzity(); isotopeprofile.cropRelativeIntenzity(0.1); diff --git a/CycloBranch/core/cSummaryFormula.h b/CycloBranch/core/cSummaryFormula.h index 17676d8..420d717 100644 --- a/CycloBranch/core/cSummaryFormula.h +++ b/CycloBranch/core/cSummaryFormula.h @@ -62,7 +62,7 @@ class cSummaryFormula { string formula; - void combineAtoms(cPeakListSeries& peaklistseries, cPeaksList& isotopeprofile, int depth, double mass, double intensity, int charge, string description, double minimumabsoluteintensity); + void combineAtoms(cPeakListSeries& peaklistseries, int peaklistseriessize, vector& peaklistseriessizes, cPeaksList& isotopeprofile, vector& depthvector, int depth, double mass, double intensity, int charge, double minimumabsoluteintensity); double getIntensity(cBricksDatabase& bricksprobabilities, vector& combarray, int mostintenseid, int mostintenseatomscount, int isotopecount); diff --git a/CycloBranch/core/cTheoreticalSpectrum.cpp b/CycloBranch/core/cTheoreticalSpectrum.cpp index 543dccd..d456eac 100644 --- a/CycloBranch/core/cTheoreticalSpectrum.cpp +++ b/CycloBranch/core/cTheoreticalSpectrum.cpp @@ -34,7 +34,7 @@ int getNumberOfScoreHits(vector& scores, double value) { } -void visualSeries::store(ofstream& os) { +void matchedSeries::store(ofstream& os) { int size; size = (int)series.size(); @@ -47,7 +47,7 @@ void visualSeries::store(ofstream& os) { } -void visualSeries::load(ifstream& is) { +void matchedSeries::load(ifstream& is) { int size; is.read((char *)&size, sizeof(int)); @@ -132,28 +132,6 @@ void cTheoreticalSpectrum::searchForPeakPairs(cPeaksList& theoreticalpeaks, int } -bool cTheoreticalSpectrum::searchHint(double mzratio, cPeaksList& experimentalpeaks, double fragmentmasserrortolerance) { - int left, right, middle; - int experimentalpeakssize = experimentalpeaks.size(); - - left = 0; - right = experimentalpeakssize - 1; - while (left <= right) { - middle = (left + right) / 2; - if (isInPpmMassErrorTolerance(experimentalpeaks[middle].mzratio, mzratio, fragmentmasserrortolerance)) { - return true; - } - if (mzratio < experimentalpeaks[middle].mzratio) { - right = middle - 1; - } - else { - left = middle + 1; - } - } - return false; -} - - void cTheoreticalSpectrum::computeStatistics(bool writedescription) { experimentalpeaksmatched = 0; scrambledpeaksmatched = 0; @@ -263,11 +241,16 @@ void cTheoreticalSpectrum::generateChargedFragments(cPeak& peak, map& intcomposition, cBricksDatabase& bricksdatabasewithcombinations, int& theoreticalpeaksrealsize, bool writedescription) { cPeak peak; int starttype, endtype; + set usedmodifications; usedmodifications.insert(0); map atoms, tempmap; - atoms.clear(); + + vector currentlosses; + vector fragmentlossmass; + vector fragmentlosssummary; + vector< map > fragmentlossmap; bool disablesummary = false; if ((parameters->mode == denovoengine) && (parameters->blindedges == 2)) { @@ -281,70 +264,69 @@ void cTheoreticalSpectrum::generatePrecursorIon(vector& intcomposition, cBr peak.isotope = false; - switch (parameters->peptidetype) - { - case linear: - peak.mzratio = parameters->searchedmodifications[candidate.getStartModifID()].massdifference + parameters->searchedmodifications[candidate.getEndModifID()].massdifference; - if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { - addStringFormulaToMap(parameters->searchedmodifications[candidate.getStartModifID()].summary, atoms); - addStringFormulaToMap(parameters->searchedmodifications[candidate.getEndModifID()].summary, atoms); - } - peak.seriesid = 0; - starttype = (int)precursor_ion; - endtype = (int)precursor_ion; - usedmodifications.insert(candidate.getStartModifID()); - usedmodifications.insert(candidate.getEndModifID()); - break; - case cyclic: - peak.mzratio = 0; - peak.seriesid = (int)intcomposition.size() - 1; - starttype = (int)cyclic_precursor_ion; - endtype = (int)cyclic_precursor_ion; - break; - case branched: - peak.mzratio = parameters->searchedmodifications[candidate.getStartModifID()].massdifference + parameters->searchedmodifications[candidate.getEndModifID()].massdifference + parameters->searchedmodifications[candidate.getMiddleModifID()].massdifference; - if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { - addStringFormulaToMap(parameters->searchedmodifications[candidate.getStartModifID()].summary, atoms); - addStringFormulaToMap(parameters->searchedmodifications[candidate.getEndModifID()].summary, atoms); - addStringFormulaToMap(parameters->searchedmodifications[candidate.getMiddleModifID()].summary, atoms); - } - peak.seriesid = 0; - starttype = (int)precursor_ion; - endtype = (int)precursor_ion; - usedmodifications.insert(candidate.getStartModifID()); - usedmodifications.insert(candidate.getEndModifID()); - usedmodifications.insert(candidate.getMiddleModifID()); - break; - case branchcyclic: - peak.mzratio = parameters->searchedmodifications[candidate.getMiddleModifID()].massdifference; - if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { - addStringFormulaToMap(parameters->searchedmodifications[candidate.getMiddleModifID()].summary, atoms); - } - peak.seriesid = 0; - starttype = (int)cyclic_precursor_ion; - endtype = (int)cyclic_precursor_ion; - usedmodifications.insert(candidate.getMiddleModifID()); - break; - case linearpolyketide: - peak.mzratio = parameters->searchedmodifications[candidate.getStartModifID()].massdifference + parameters->searchedmodifications[candidate.getEndModifID()].massdifference; - if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { - addStringFormulaToMap(parameters->searchedmodifications[candidate.getStartModifID()].summary, atoms); - addStringFormulaToMap(parameters->searchedmodifications[candidate.getEndModifID()].summary, atoms); - } - peak.seriesid = 0; - usedmodifications.insert(candidate.getStartModifID()); - usedmodifications.insert(candidate.getEndModifID()); - break; - case cyclicpolyketide: - peak.mzratio = 0; - peak.seriesid = (int)intcomposition.size() - 1; - starttype = (int)cyclic_polyketide_precursor_ion; - endtype = (int)cyclic_polyketide_precursor_ion; - break; - case other: - break; - default: - break; + switch (parameters->peptidetype) { + case linear: + peak.mzratio = parameters->searchedmodifications[candidate.getStartModifID()].massdifference + parameters->searchedmodifications[candidate.getEndModifID()].massdifference; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + addStringFormulaToMap(parameters->searchedmodifications[candidate.getStartModifID()].summary, atoms); + addStringFormulaToMap(parameters->searchedmodifications[candidate.getEndModifID()].summary, atoms); + } + peak.seriesid = 0; + starttype = (int)precursor_ion; + endtype = (int)precursor_ion; + usedmodifications.insert(candidate.getStartModifID()); + usedmodifications.insert(candidate.getEndModifID()); + break; + case cyclic: + peak.mzratio = 0; + peak.seriesid = (int)intcomposition.size() - 1; + starttype = (int)cyclic_precursor_ion; + endtype = (int)cyclic_precursor_ion; + break; + case branched: + peak.mzratio = parameters->searchedmodifications[candidate.getStartModifID()].massdifference + parameters->searchedmodifications[candidate.getEndModifID()].massdifference + parameters->searchedmodifications[candidate.getMiddleModifID()].massdifference; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + addStringFormulaToMap(parameters->searchedmodifications[candidate.getStartModifID()].summary, atoms); + addStringFormulaToMap(parameters->searchedmodifications[candidate.getEndModifID()].summary, atoms); + addStringFormulaToMap(parameters->searchedmodifications[candidate.getMiddleModifID()].summary, atoms); + } + peak.seriesid = 0; + starttype = (int)precursor_ion; + endtype = (int)precursor_ion; + usedmodifications.insert(candidate.getStartModifID()); + usedmodifications.insert(candidate.getEndModifID()); + usedmodifications.insert(candidate.getMiddleModifID()); + break; + case branchcyclic: + peak.mzratio = parameters->searchedmodifications[candidate.getMiddleModifID()].massdifference; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + addStringFormulaToMap(parameters->searchedmodifications[candidate.getMiddleModifID()].summary, atoms); + } + peak.seriesid = 0; + starttype = (int)cyclic_precursor_ion; + endtype = (int)cyclic_precursor_ion; + usedmodifications.insert(candidate.getMiddleModifID()); + break; + case linearpolyketide: + peak.mzratio = parameters->searchedmodifications[candidate.getStartModifID()].massdifference + parameters->searchedmodifications[candidate.getEndModifID()].massdifference; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + addStringFormulaToMap(parameters->searchedmodifications[candidate.getStartModifID()].summary, atoms); + addStringFormulaToMap(parameters->searchedmodifications[candidate.getEndModifID()].summary, atoms); + } + peak.seriesid = 0; + usedmodifications.insert(candidate.getStartModifID()); + usedmodifications.insert(candidate.getEndModifID()); + break; + case cyclicpolyketide: + peak.mzratio = 0; + peak.seriesid = (int)intcomposition.size() - 1; + starttype = (int)cyclic_polyketide_precursor_ion; + endtype = (int)cyclic_polyketide_precursor_ion; + break; + case other: + break; + default: + break; } for (int i = 0; i < (int)intcomposition.size(); i++) { @@ -352,6 +334,9 @@ void cTheoreticalSpectrum::generatePrecursorIon(vector& intcomposition, cBr if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { mergeMaps(bricksdatabasewithcombinations[intcomposition[i] - 1].getSummaryMap(), atoms); } + + // to do - performance optimization - no need to recalculate everything in every iteration + updateListOfNeutralLosses(bricksdatabasewithcombinations, bricksdatabasewithcombinations[intcomposition[i] - 1], currentlosses, fragmentlossmass, fragmentlosssummary, fragmentlossmap, writedescription, disablesummary); } if (parameters->peptidetype == linearpolyketide) { @@ -390,132 +375,317 @@ void cTheoreticalSpectrum::generatePrecursorIon(vector& intcomposition, cBr endtype = (int)linear_polyketide_precursor_ion_h_h; } } - + double tempratio = peak.mzratio; + for (int i = starttype; i <= endtype; i++) { + for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { - for (set::iterator it = usedmodifications.begin(); it != usedmodifications.end(); ++it) { - for (int k = 1; k <= abs(parameters->precursorcharge); k++) { - peak.iontype = (eFragmentIonType)i; - peak.neutrallosstype = (j == -1) ? -1 : parameters->neutrallossesfortheoreticalspectra[j]; - peak.mzratio = tempratio + parameters->iondefinitions[(eFragmentIonType)i].massdifference - parameters->searchedmodifications[*it].massdifference; - if (j >= 0) { - peak.mzratio += parameters->neutrallossesdefinitions[peak.neutrallosstype].massdifference; - } - peak.mzratio = charge(uncharge(peak.mzratio, 1), (parameters->precursorcharge > 0) ? k : -k); - peak.charge = (parameters->precursorcharge > 0) ? k : -k; - if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { - tempmap = atoms; - mergeMaps(parameters->iondefinitions[(eFragmentIonType)i].summarymap, tempmap); - if (j >= 0) { - mergeMaps(parameters->neutrallossesdefinitions[peak.neutrallosstype].summarymap, tempmap); - } - rechargeMap(peak.charge, tempmap); - peak.formula.setFromMap(tempmap, false); - peak.formula.addFormula(parameters->searchedmodifications[*it].summary, true); - } + for (auto it = usedmodifications.begin(); it != usedmodifications.end(); ++it) { - if (writedescription) { - string str; + for (int k = -1; k < (int)fragmentlossmass.size(); k++) { + + for (int m = 1; m <= abs(parameters->precursorcharge); m++) { - peak.description = parameters->iondefinitions[(eFragmentIonType)i].name; + peak.iontype = (eFragmentIonType)i; + peak.neutrallosstype = (j == -1) ? -1 : parameters->neutrallossesfortheoreticalspectra[j]; + peak.mzratio = tempratio + parameters->iondefinitions[(eFragmentIonType)i].massdifference - parameters->searchedmodifications[*it].massdifference; if (j >= 0) { - peak.description += "-" + parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + peak.mzratio += parameters->neutrallossesdefinitions[peak.neutrallosstype].massdifference; + } + if (k >= 0) { + peak.mzratio += fragmentlossmass[k]; } - if (*it > 0) { - peak.description += " (" + parameters->searchedmodifications[*it].name + " loss)"; + peak.mzratio = charge(uncharge(peak.mzratio, 1), (parameters->precursorcharge > 0) ? m : -m); + peak.charge = (parameters->precursorcharge > 0) ? m : -m; + + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + tempmap = atoms; + mergeMaps(parameters->iondefinitions[(eFragmentIonType)i].summarymap, tempmap); + if (j >= 0) { + mergeMaps(parameters->neutrallossesdefinitions[peak.neutrallosstype].summarymap, tempmap); + } + if (k >= 0) { + mergeMaps(fragmentlossmap[k], tempmap); + } + rechargeMap(peak.charge, tempmap); + peak.formula.setFromMap(tempmap, false); + peak.formula.addFormula(parameters->searchedmodifications[*it].summary, true); } - peak.description += ":"; - - if (parameters->precursorcharge > 0) { - if (!parameters->precursoradduct.empty()) { - str = "+" + parameters->precursoradduct; - if (k > 1) { - str += "+"; - if (k > 2) { - str += to_string(k - 1); + + if (writedescription) { + string str; + + peak.description = parameters->iondefinitions[(eFragmentIonType)i].name; + if ((k >= 0) || (j >= 0)) { + peak.description += " -"; + if (k >= 0) { + peak.description += fragmentlosssummary[k]; + } + if (j >= 0) { + peak.description += parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + } + } + if (*it > 0) { + peak.description += " (" + parameters->searchedmodifications[*it].name + " loss)"; + } + peak.description += ":"; + + if (parameters->precursorcharge > 0) { + if (!parameters->precursoradduct.empty()) { + str = "+" + parameters->precursoradduct; + if (m > 1) { + str += "+"; + if (m > 2) { + str += to_string(m - 1); + } + str += "H"; + } + peak.description.replace(peak.description.find("+zH"), 3, str); + } + else { + str = "+"; + if (m > 1) { + str += to_string(m); } str += "H"; + peak.description.replace(peak.description.find("+zH"), 3, str); + } + + str = "]"; + if (m > 1) { + str += to_string(m); } - peak.description.replace(peak.description.find("+zH"), 3, str); + str += "+"; + peak.description.replace(peak.description.find("]+"), 2, str); } else { - str = "+"; - if (k > 1) { - str += to_string(k); + if (!parameters->precursoradduct.empty()) { + str = "-" + parameters->precursoradduct; + if (m > 1) { + str += "-"; + if (m > 2) { + str += to_string(m - 1); + } + str += "H"; + } + peak.description.replace(peak.description.find("+zH"), 3, str); + } + else { + str = "-"; + if (m > 1) { + str += to_string(m); + } + str += "H"; + peak.description.replace(peak.description.find("+zH"), 3, str); + } + + str = "]"; + if (m > 1) { + str += to_string(m); } - str += "H"; - peak.description.replace(peak.description.find("+zH"), 3, str); + str += "-"; + peak.description.replace(peak.description.find("]+"), 2, str); } + } - str = "]"; - if (k > 1) { - str += to_string(k); + if (writedescription) { + if (peak.formula.hasAllElementsPositive()) { + if (parameters->reportunmatchedtheoreticalpeaks || searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { + addPeakToList(peak, theoreticalpeaksrealsize); + } + if (!parameters->generateisotopepattern) { + addMetalPeaks(peak, parameters->metaladducts, theoreticalpeaksrealsize, m, writedescription); + } } - str += "+"; - peak.description.replace(peak.description.find("]+"), 2, str); } else { - if (!parameters->precursoradduct.empty()) { - str = "-" + parameters->precursoradduct; - if (k > 1) { - str += "-"; - if (k > 2) { - str += to_string(k - 1); + if (parameters->generateisotopepattern) { + if (peak.formula.hasAllElementsPositive()) { + if (searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { + addPeakToList(peak, theoreticalpeaksrealsize); } - str += "H"; } - peak.description.replace(peak.description.find("+zH"), 3, str); } else { - str = "-"; - if (k > 1) { - str += to_string(k); + if (searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { + addPeakToList(peak, theoreticalpeaksrealsize); } - str += "H"; - peak.description.replace(peak.description.find("+zH"), 3, str); - } - - str = "]"; - if (k > 1) { - str += to_string(k); + addMetalPeaks(peak, parameters->metaladducts, theoreticalpeaksrealsize, m, writedescription); } - str += "-"; - peak.description.replace(peak.description.find("]+"), 2, str); } + } - if (writedescription) { - if (peak.formula.hasAllElementsPositive()) { - if (parameters->reportunmatchedtheoreticalpeaks || searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { - addPeakToList(peak, theoreticalpeaksrealsize); - } - if (!parameters->generateisotopepattern) { - addMetalPeaks(peak, parameters->metaladducts, theoreticalpeaksrealsize, k, writedescription); + } + + } + + } + + } + +} + + +void cTheoreticalSpectrum::generatePrecursorIonForOther(int& theoreticalpeaksrealsize, bool writedescription) { + cPeak peak; + string formula; + + map atoms, tempmap; + + peak.isotope = false; + peak.seriesid = 0; + peak.iontype = fragmentIonTypeEnd; + + peak.mzratio = candidate.getSummaryFormula().getMass() + H - e; + + if (parameters->generateisotopepattern || writedescription) { + formula = "H+"; + addStringFormulaToMap(formula, atoms); + formula = candidate.getSummaryFormula().getSummary(); + addStringFormulaToMap(formula, atoms); + } + + /* + if (parameters->precursoradduct.compare("") != 0) { + cSummaryFormula adduct; + adduct.setFormula(parameters->precursoradduct); + + peak.mzratio += adduct.getMass() - H; + + if (parameters->generateisotopepattern || writedescription) { + formula = "H-1"; + addStringFormulaToMap(formula, atoms); + addStringFormulaToMap(parameters->precursoradduct, atoms); + } + } + */ + + double tempratio = peak.mzratio; + + for (int i = -1; i < (int)parameters->neutrallossesfortheoreticalspectra.size(); i++) { + + for (int j = 1; j <= abs(parameters->precursorcharge); j++) { + + peak.neutrallosstype = (i == -1) ? -1 : parameters->neutrallossesfortheoreticalspectra[i]; + peak.mzratio = tempratio; + if (i >= 0) { + peak.mzratio += parameters->neutrallossesdefinitions[peak.neutrallosstype].massdifference; + } + peak.mzratio = charge(uncharge(peak.mzratio, 1), (parameters->precursorcharge > 0) ? j : -j); + peak.charge = (parameters->precursorcharge > 0) ? j : -j; + + if (parameters->generateisotopepattern || writedescription) { + tempmap = atoms; + if (i >= 0) { + mergeMaps(parameters->neutrallossesdefinitions[peak.neutrallosstype].summarymap, tempmap); + } + rechargeMap(peak.charge, tempmap); + peak.formula.setFromMap(tempmap, false); + } + + if (writedescription) { + string str; + + peak.description = "[M+zH]+"; + if (i >= 0) { + peak.description += " -"; + if (i >= 0) { + peak.description += parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + } + } + peak.description += ":"; + + if (parameters->precursorcharge > 0) { + if (!parameters->precursoradduct.empty()) { + str = "+" + parameters->precursoradduct; + if (j > 1) { + str += "+"; + if (j > 2) { + str += to_string(j - 1); } + str += "H"; } + peak.description.replace(peak.description.find("+zH"), 3, str); } else { - if (parameters->generateisotopepattern) { - if (peak.formula.hasAllElementsPositive()) { - if (searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { - addPeakToList(peak, theoreticalpeaksrealsize); - } - } + str = "+"; + if (j > 1) { + str += to_string(j); } - else { - if (searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { - addPeakToList(peak, theoreticalpeaksrealsize); + str += "H"; + peak.description.replace(peak.description.find("+zH"), 3, str); + } + + str = "]"; + if (j > 1) { + str += to_string(j); + } + str += "+"; + peak.description.replace(peak.description.find("]+"), 2, str); + } + else { + if (!parameters->precursoradduct.empty()) { + str = "-" + parameters->precursoradduct; + if (j > 1) { + str += "-"; + if (j > 2) { + str += to_string(j - 1); } - addMetalPeaks(peak, parameters->metaladducts, theoreticalpeaksrealsize, k, writedescription); + str += "H"; + } + peak.description.replace(peak.description.find("+zH"), 3, str); + } + else { + str = "-"; + if (j > 1) { + str += to_string(j); } + str += "H"; + peak.description.replace(peak.description.find("+zH"), 3, str); + } + + str = "]"; + if (j > 1) { + str += to_string(j); } + str += "-"; + peak.description.replace(peak.description.find("]+"), 2, str); + } + } + if (writedescription) { + if (peak.formula.hasAllElementsPositive()) { + if (parameters->reportunmatchedtheoreticalpeaks || searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { + addPeakToList(peak, theoreticalpeaksrealsize); + } + if (!parameters->generateisotopepattern) { + addMetalPeaks(peak, parameters->metaladducts, theoreticalpeaksrealsize, j, writedescription); + } + } + } + else { + if (parameters->generateisotopepattern) { + if (peak.formula.hasAllElementsPositive()) { + if (searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { + addPeakToList(peak, theoreticalpeaksrealsize); + } + } + } + else { + if (searchHint(peak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { + addPeakToList(peak, theoreticalpeaksrealsize); + } + addMetalPeaks(peak, parameters->metaladducts, theoreticalpeaksrealsize, j, writedescription); } } + } + } + } @@ -577,6 +747,11 @@ void cTheoreticalSpectrum::generateScrambledIons(cBricksDatabase& bricksdatabase double tempmzratio; map tempmap; bool tempmapready, disablesummary; + + vector currentlosses; + vector fragmentlossmass; + vector fragmentlosssummary; + vector< map > fragmentlossmap; // generate scrambled peaks from sequences for (auto it = scrambledsequences.begin(); it != scrambledsequences.end(); ++it) { @@ -585,11 +760,6 @@ void cTheoreticalSpectrum::generateScrambledIons(cBricksDatabase& bricksdatabase intcomposition.clear(); b.explodeToIntComposition(intcomposition); - tempmzratio = 0; - for (int i = 0; i < (int)intcomposition.size(); i++) { - tempmzratio += bricksdatabase[intcomposition[i] - 1].getMass(); - } - disablesummary = false; if ((parameters->mode == denovoengine) && (parameters->blindedges == 2)) { for (int i = 0; i < (int)intcomposition.size(); i++) { @@ -600,101 +770,126 @@ void cTheoreticalSpectrum::generateScrambledIons(cBricksDatabase& bricksdatabase } } + tempmzratio = 0; + currentlosses.clear(); + for (int i = 0; i < (int)intcomposition.size(); i++) { + tempmzratio += bricksdatabase[intcomposition[i] - 1].getMass(); + + // to do - possible performance optimization + updateListOfNeutralLosses(bricksdatabase, bricksdatabase[intcomposition[i] - 1], currentlosses, fragmentlossmass, fragmentlosssummary, fragmentlossmap, writedescription, disablesummary); + } + tempmapready = false; for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { - peak.clear(); - peak.iontype = (eFragmentIonType)parameters->ionsfortheoreticalspectra[i]; - if (j >= 0) { - peak.neutrallosstype = parameters->neutrallossesfortheoreticalspectra[j]; - } - else { - peak.neutrallosstype = -1; - } - peak.mzratio = parameters->iondefinitions[peak.iontype].massdifference; - if (peak.neutrallosstype >= 0) { - peak.mzratio += parameters->neutrallossesdefinitions[peak.neutrallosstype].massdifference; - } - peak.mzratio += tempmzratio; + for (int k = -1; k < (int)fragmentlossmass.size(); k++) { - peak.charge = 1; - if (parameters->precursorcharge < 0) { - peak.mzratio = charge(uncharge(peak.mzratio, 1), -1); - peak.charge = -1; - } + peak.clear(); + peak.iontype = (eFragmentIonType)parameters->ionsfortheoreticalspectra[i]; + if (j >= 0) { + peak.neutrallosstype = parameters->neutrallossesfortheoreticalspectra[j]; + } + else { + peak.neutrallosstype = -1; + } + peak.mzratio = parameters->iondefinitions[peak.iontype].massdifference; + if (peak.neutrallosstype >= 0) { + peak.mzratio += parameters->neutrallossesdefinitions[peak.neutrallosstype].massdifference; + } + if (k >= 0) { + peak.mzratio += fragmentlossmass[k]; + } + peak.mzratio += tempmzratio; - // skip scrambled peaks whose m/z ratios collide with common fragment ions - if (theoreticalmzratios.find((unsigned long long)(peak.mzratio*(double)1000000)) != theoreticalmzratios.end()) { - continue; - } + peak.charge = 1; + if (parameters->precursorcharge < 0) { + peak.mzratio = charge(uncharge(peak.mzratio, 1), -1); + peak.charge = -1; + } - if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + // skip scrambled peaks whose m/z ratios collide with common fragment ions + if (theoreticalmzratios.find((unsigned long long)(peak.mzratio*(double)1000000)) != theoreticalmzratios.end()) { + continue; + } - if (!tempmapready) { - tempmap.clear(); + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + + if (!tempmapready) { + tempmap.clear(); + + for (int m = 0; m < (int)intcomposition.size(); m++) { + mergeMaps(bricksdatabase[intcomposition[m] - 1].getSummaryMap(), tempmap); + } - for (int k = 0; k < (int)intcomposition.size(); k++) { - mergeMaps(bricksdatabase[intcomposition[k] - 1].getSummaryMap(), tempmap); + tempmapready = true; } - tempmapready = true; - } + atoms = tempmap; + mergeMaps(parameters->iondefinitions[peak.iontype].summarymap, atoms); + if (peak.neutrallosstype >= 0) { + mergeMaps(parameters->neutrallossesdefinitions[peak.neutrallosstype].summarymap, atoms); + } + if (k >= 0) { + mergeMaps(fragmentlossmap[k], atoms); + } - atoms = tempmap; - mergeMaps(parameters->iondefinitions[peak.iontype].summarymap, atoms); - if (peak.neutrallosstype >= 0) { - mergeMaps(parameters->neutrallossesdefinitions[peak.neutrallosstype].summarymap, atoms); - } + if (peak.charge == -1) { + rechargeMap(-1, atoms); + } - if (peak.charge == -1) { - rechargeMap(-1, atoms); + peak.formula.setFromMap(atoms, false); } - peak.formula.setFromMap(atoms, false); - } + peak.scrambled = true; - peak.scrambled = true; + if (writedescription) { - if (writedescription) { + if (parameters->precursorcharge < 0) { + peak.description = "1- "; + } + else { + peak.description = "1+ "; + } - if (parameters->precursorcharge < 0) { - peak.description = "1- "; - } - else { - peak.description = "1+ "; - } + peak.description += "scrambled "; + peak.description += parameters->iondefinitions[peak.iontype].name.substr(0, 1) + to_string((int)intcomposition.size()); + if (parameters->iondefinitions[peak.iontype].name.size() > 1) { + peak.description += parameters->iondefinitions[peak.iontype].name.substr(1, parameters->iondefinitions[peak.iontype].name.length() - 1); + } + if ((k >= 0) || (peak.neutrallosstype >= 0)) { + peak.description += " -"; + if (k >= 0) { + peak.description += fragmentlosssummary[k]; + } + if (peak.neutrallosstype >= 0) { + peak.description += parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + } + } + + addAdductToDescription(peak.description, parameters->metaladducts); + peak.description += ": "; + for (int m = 0; m < (int)intcomposition.size(); m++) { + peak.description += "[" + bricksdatabase[intcomposition[m] - 1].getAcronymsAsString() + "]"; + if (m < (int)intcomposition.size() - 1) { + peak.description += '-'; + } + } - peak.description += "scrambled "; - peak.description += parameters->iondefinitions[peak.iontype].name.substr(0, 1) + to_string((int)intcomposition.size()); - if (parameters->iondefinitions[peak.iontype].name.size() > 1) { - peak.description += parameters->iondefinitions[peak.iontype].name.substr(1, parameters->iondefinitions[peak.iontype].name.length() - 1); - } - if (peak.neutrallosstype >= 0) { - peak.description += "-" + parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; } - addAdductToDescription(peak.description, parameters->metaladducts); - peak.description += ": "; - for (int k = 0; k < (int)intcomposition.size(); k++) { - peak.description += "[" + bricksdatabase[intcomposition[k] - 1].getAcronymsAsString() + "]"; - if (k < (int)intcomposition.size() - 1) { - peak.description += '-'; - } + if (scrambledpeaks.size() > scrambledspeaksrealsize) { + scrambledpeaks[scrambledspeaksrealsize] = peak; + } + else { + scrambledpeaks.add(peak); } + scrambledspeaksrealsize++; } - if (scrambledpeaks.size() > scrambledspeaksrealsize) { - scrambledpeaks[scrambledspeaksrealsize] = peak; - } - else { - scrambledpeaks.add(peak); - } - scrambledspeaksrealsize++; - } } @@ -735,6 +930,190 @@ void cTheoreticalSpectrum::generateScrambledIons(cBricksDatabase& bricksdatabase } +void cTheoreticalSpectrum::updateListOfNeutralLosses(cBricksDatabase& bricksdatabase, cBrick& block, vector& currentlosses, vector& fragmentlossmass, vector& fragmentlosssummary, vector< map >& fragmentlossmap, bool writedescription, bool disablesummary) { + set< vector > fragmentlossset; + map fmap; + + const unsigned max_losses = 25; + + vector tmplossvector; + tmplossvector.reserve(max_losses); + + unsigned binary, binarypos, currsize, loopend; + + // the data are updated only if the block contains a list of losses + if (block.getLossIDs().size() > 0) { + currentlosses.reserve(currentlosses.size() + block.getLossIDs().size()); + currentlosses.insert(currentlosses.end(), block.getLossIDs().begin(), block.getLossIDs().end()); + sort(currentlosses.begin(), currentlosses.end()); + + fragmentlossset.clear(); + + fragmentlossmass.clear(); + if (writedescription) { + fragmentlosssummary.clear(); + } + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + fragmentlossmap.clear(); + } + + currsize = (unsigned)currentlosses.size(); + if (currsize < max_losses) { + loopend = 1 << currsize; + for (unsigned j = 1; j < loopend; j++) { + binary = j; + binarypos = 0; + tmplossvector.clear(); + while ((binary > 0) && (binarypos < currsize)) { + if ((binary & 1) == 1) { + tmplossvector.push_back(currentlosses[binarypos]); + } + binary = binary >> 1; + binarypos++; + } + fragmentlossset.insert(tmplossvector); + } + + fragmentlossmass.reserve(fragmentlossset.size()); + if (writedescription) { + fragmentlosssummary.reserve(fragmentlossset.size()); + } + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + fragmentlossmap.reserve(fragmentlossset.size()); + } + + for (auto& it : fragmentlossset) { + fragmentlossmass.push_back(bricksdatabase.getMassOfNeutralLosses((vector&)it)); + if (writedescription) { + fragmentlosssummary.push_back(bricksdatabase.getSummaryFormulaOfNeutralLosses((vector&)it)); + } + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + bricksdatabase.getMapOfNeutralLosses((vector&)it, fmap); + fragmentlossmap.push_back(fmap); + } + } + } + } + +} + + +void cTheoreticalSpectrum::generateInternalFragments(cBricksDatabase& bricksdatabase, cPeak& peak, int maxcharge, int& peaklistrealsize, vector& intcomposition, int pos, map& atoms, vector& currentlosses, eFragmentIonType fragmentiontype, ePeptideType peptidetype, TRotationInfo* trotation, bool writedescription, bool disablesummary) { + + vector internalcurrentlosses = currentlosses; + + vector fragmentlossmass; + vector fragmentlosssummary; + vector< map > fragmentlossmap; + + vector internalcomposition; + + double tmpmz1; + map tmpmap1; + + double tmpmz2; + map tmpmap2; + + int tmprotationid; + int tmpseriesid; + + if ((peptidetype == branchcyclic) && trotation && (trotation->id == 0)) { + + if ((pos >= trotation->middlebranchstart) && (pos < trotation->middlebranchend)) { + + internalcomposition.clear(); + for (int i = 0; i <= pos; i++) { + internalcomposition.push_back(intcomposition[i]); + } + + tmpmz1 = peak.mzratio; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + tmpmap1 = atoms; + } + + tmprotationid = peak.rotationid; + tmpseriesid = peak.seriesid; + + peak.rotationid = -1; + peak.seriesid = -1; + + for (int i = trotation->middlebranchend + 1; i < (int)intcomposition.size() - 1; i++) { + internalcomposition.push_back(intcomposition[i]); + + peak.mzratio += bricksdatabase[intcomposition[i] - 1].getMass(); + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + mergeMaps(bricksdatabase[intcomposition[i] - 1].getSummaryMap(), tmpmap1); + } + + updateListOfNeutralLosses(bricksdatabase, bricksdatabase[intcomposition[pos] - 1], internalcurrentlosses, fragmentlossmass, fragmentlosssummary, fragmentlossmap, writedescription, disablesummary); + + tmpmz2 = peak.mzratio; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + tmpmap2 = tmpmap1; + } + + for (int j = -1; j < (int)fragmentlossmass.size(); j++) { + + if (writedescription) { + peak.description = "internal "; + + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 1) + to_string((int)internalcomposition.size()); + // to do - polyketides + // if (parameters->iondefinitions[fragmentiontype].name.size() > 1) { + // peak.description += parameters->iondefinitions[fragmentiontype].name.substr(1, parameters->iondefinitions[fragmentiontype].name.length() - 1); + // } + + if ((peak.neutrallosstype >= 0) || (j >= 0)) { + peak.description += " -"; + if (j >= 0) { + peak.description += fragmentlosssummary[j]; + } + if (peak.neutrallosstype >= 0) { + peak.description += parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + } + } + + addAdductToDescription(peak.description, parameters->metaladducts); + peak.description += ": "; + + for (int k = 0; k < (int)internalcomposition.size(); k++) { + peak.description += "[" + bricksdatabase[internalcomposition[k] - 1].getAcronymsAsString() + "]"; + if (k < (int)internalcomposition.size() - 1) { + peak.description += '-'; + } + } + } + + if (j >= 0) { + peak.mzratio += fragmentlossmass[j]; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + mergeMaps(fragmentlossmap[j], tmpmap2); + } + } + + generateChargedFragments(peak, tmpmap2, peaklistrealsize, maxcharge, writedescription, disablesummary); + + peak.mzratio = tmpmz2; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + tmpmap2 = tmpmap1; + } + + } + + } + + peak.mzratio = tmpmz1; + + peak.rotationid = tmprotationid; + peak.seriesid = tmpseriesid; + + } + + } + +} + + void cTheoreticalSpectrum::selectAndNormalizeScrambledSequences(unordered_set& scrambledsequences) { unordered_set temp = scrambledsequences; scrambledsequences.clear(); @@ -850,7 +1229,7 @@ void cTheoreticalSpectrum::addMetalPeaks(cPeak& peak, vector& metals, in tmppeak.description.replace(tmppeak.description.find(metals[i]), metals[i].size(), isotopename); } - if ((parameters->mode == dereplication) || (writedescription && parameters->reportunmatchedtheoreticalpeaks) || searchHint(tmppeak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch) || (writedescription && parameters->reportunmatchedtheoreticalpeaks) || searchHint(tmppeak.mzratio, experimentalpeaks, parameters->fragmentmasserrortolerance)) { addPeakToList(tmppeak, peaklistrealsize); } } @@ -938,7 +1317,7 @@ void cTheoreticalSpectrum::removeUnmatchedIsotopePatterns(cPeaksList& theoretica // copy unmatched theoretical peaks in matched envelopes into the output if (storeunmatchedpeaks && !theoreticalpeaks[j].decoy && (theoreticalpeaks[j].matched == 0)) { if ((theoreticalpeaks[j].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) || - ((parameters->mode == dereplication) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks)) { + (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks)) { outputtheoreticalpeaks.add(theoreticalpeaks[j]); } } @@ -954,7 +1333,7 @@ void cTheoreticalSpectrum::removeUnmatchedIsotopePatterns(cPeaksList& theoretica theoreticalpeaks[j].matched--; theoreticalpeaks[j].matchedid = -1; } - if (storeunmatchedpeaks && !theoreticalpeaks[j].decoy && (parameters->mode == dereplication) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks) { + if (storeunmatchedpeaks && !theoreticalpeaks[j].decoy && ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks) { outputtheoreticalpeaks.add(theoreticalpeaks[j]); } } @@ -994,7 +1373,7 @@ void cTheoreticalSpectrum::removeUnmatchedIsotopePatterns(cPeaksList& theoretica if (storeunmatchedpeaks && !theoreticalpeaks[j].decoy && (theoreticalpeaks[j].matched == 0)) { if ((theoreticalpeaks[j].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) || - ((parameters->mode == dereplication) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks)) { + (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks)) { outputtheoreticalpeaks.add(theoreticalpeaks[j]); } } @@ -1009,7 +1388,7 @@ void cTheoreticalSpectrum::removeUnmatchedIsotopePatterns(cPeaksList& theoretica theoreticalpeaks[j].matched--; theoreticalpeaks[j].matchedid = -1; } - if (storeunmatchedpeaks && !theoreticalpeaks[j].decoy && (parameters->mode == dereplication) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks) { + if (storeunmatchedpeaks && !theoreticalpeaks[j].decoy && ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && parameters->generateisotopepattern && parameters->reportunmatchedtheoreticalpeaks) { outputtheoreticalpeaks.add(theoreticalpeaks[j]); } } @@ -1017,73 +1396,31 @@ void cTheoreticalSpectrum::removeUnmatchedIsotopePatterns(cPeaksList& theoretica } -void cTheoreticalSpectrum::removeUnmatchedFeatures(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, int id) { - int requestedfeaturesize; - bool clearfeature; - int k; - - for (int i = 0; i < theoreticalpeaksrealsize; i++) { - if (theoreticalpeaks[i].isotope || (theoreticalpeaks[i].matched == 0)) { - continue; - } - - requestedfeaturesize = parameters->minimumfeaturesize; - - k = id - 1; - while ((k >= 0) && (requestedfeaturesize > 1)) { - if (!searchHint(theoreticalpeaks[i].mzratio, parameters->peaklistseries[k], parameters->fragmentmasserrortolerance)) { - break; - } - requestedfeaturesize--; - k--; - } - - clearfeature = false; - if (id + requestedfeaturesize > parameters->peaklistseries.size()) { - clearfeature = true; - } - else { - for (int j = id + 1; j < id + requestedfeaturesize; j++) { - if (!searchHint(theoreticalpeaks[i].mzratio, parameters->peaklistseries[j], parameters->fragmentmasserrortolerance)) { - clearfeature = true; - break; - } - } - } +int cTheoreticalSpectrum::removeUnmatchedFeatures(bool lcms, cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, vector< vector >& hintsindex/*, int id*/) { + if (theoreticalpeaksrealsize == 0) { + return 0; + } - if (clearfeature) { - experimentalmatches[theoreticalpeaks[i].matchedid].erase(experimentalmatches[theoreticalpeaks[i].matchedid].find(i)); - experimentalpeaks[theoreticalpeaks[i].matchedid].matched--; + int size = parameters->peaklistseries.size(); + int k; - theoreticalpeaks[i].matched--; - theoreticalpeaks[i].matchedid = -1; - } - } -} + int peaksremoved = 0; + int featuresize; + int maxfeaturesize; -void cTheoreticalSpectrum::removeUnmatchedFeaturesAndCompounds(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, int id) { - if (theoreticalpeaksrealsize == 0) { - return; - } + int patternsize; int start = 0; int stop = 0; int currid = theoreticalpeaks[0].compoundid; - bool matched = true; - int featurestart = 0; - int featureend = parameters->peaklistseries.size() - 1; - int k; + int compoundsize = 0; + int msize; for (int i = 0; i < theoreticalpeaksrealsize; i++) { - if (currid != theoreticalpeaks[i].compoundid) { - if (matched) { - if (featureend - featurestart + 1 < parameters->minimumfeaturesize) { - matched = false; - } - } - if (!matched) { + if (currid != theoreticalpeaks[i].compoundid) { + if (compoundsize < parameters->minimumiontypes) { for (int j = start; j <= stop; j++) { if (theoreticalpeaks[j].matched > 0) { experimentalmatches[theoreticalpeaks[j].matchedid].erase(experimentalmatches[theoreticalpeaks[j].matchedid].find(j)); @@ -1091,58 +1428,87 @@ void cTheoreticalSpectrum::removeUnmatchedFeaturesAndCompounds(cPeaksList& theor theoreticalpeaks[j].matched--; theoreticalpeaks[j].matchedid = -1; + + peaksremoved++; } } } currid = theoreticalpeaks[i].compoundid; start = i; - matched = true; - featurestart = 0; - featureend = parameters->peaklistseries.size() - 1; + compoundsize = 0; } - if (!theoreticalpeaks[i].isotope) { - if (theoreticalpeaks[i].matched == 0) { - matched = false; - } - else { + stop = i; + + // ok, matched and unmatched peaks are searched (except isotopes) to calculate compoundsize correctly + if ((theoreticalpeaks[i].isotope) /*|| (theoreticalpeaks[i].matched == 0)*/) { + continue; + } - if (matched) { + if ((int)hintsindex[i].size() >= parameters->minimumfeaturesize) { - k = id - 1; - while (k >= 0) { - if (!searchHint(theoreticalpeaks[i].mzratio, parameters->peaklistseries[k], parameters->fragmentmasserrortolerance)) { - break; + featuresize = 0; + maxfeaturesize = 0; + + for (int j = 0; j < (int)hintsindex[i].size(); j++) { + + if (lcms) { + if ((j > 0) && (hintsindex[i][j - 1] + 1 != hintsindex[i][j])) { + if (featuresize > maxfeaturesize) { + maxfeaturesize = featuresize; } + featuresize = 0; + } + } + + if (parameters->generateisotopepattern) { + k = i; + while ((k >= 0) && (theoreticalpeaks[k].groupid == theoreticalpeaks[i].groupid)) { k--; } - featurestart = max(featurestart, k + 1); + k++; + + patternsize = 0; + while ((k < theoreticalpeaksrealsize) && (theoreticalpeaks[k].groupid == theoreticalpeaks[i].groupid)) { + msize = (int)hintsindex[k].size(); + for (int m = 0; m < msize; m++) { + if (hintsindex[k][m] == hintsindex[i][j]) { + patternsize++; + break; + } + } - k = id + 1; - while (k < parameters->peaklistseries.size()) { - if (!searchHint(theoreticalpeaks[i].mzratio, parameters->peaklistseries[k], parameters->fragmentmasserrortolerance)) { + if (patternsize >= parameters->minimumpatternsize) { break; } + k++; } - featureend = min(featureend, k - 1); + if (patternsize >= parameters->minimumpatternsize) { + featuresize++; + } + } + else { + featuresize++; } } - } - stop = i; - } + if (featuresize > maxfeaturesize) { + maxfeaturesize = featuresize; + } + + if (maxfeaturesize >= parameters->minimumfeaturesize) { + compoundsize++; + } - if (matched) { - if (featureend - featurestart + 1 < parameters->minimumfeaturesize) { - matched = false; } + } - if (!matched) { + if (compoundsize < parameters->minimumiontypes) { for (int j = start; j <= stop; j++) { if (theoreticalpeaks[j].matched > 0) { experimentalmatches[theoreticalpeaks[j].matchedid].erase(experimentalmatches[theoreticalpeaks[j].matchedid].find(j)); @@ -1150,24 +1516,30 @@ void cTheoreticalSpectrum::removeUnmatchedFeaturesAndCompounds(cPeaksList& theor theoreticalpeaks[j].matched--; theoreticalpeaks[j].matchedid = -1; + + peaksremoved++; } } } + + return peaksremoved; } -void cTheoreticalSpectrum::removeUnmatchedCompounds(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks) { +int cTheoreticalSpectrum::removeUnmatchedCompounds(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, int minimumiontypes) { if (theoreticalpeaksrealsize == 0) { - return; + return 0; } + int peaksremoved = 0; + int start = 0; int stop = 0; int currid = theoreticalpeaks[0].compoundid; - bool matched = true; + int matched = 0; for (int i = 0; i < theoreticalpeaksrealsize; i++) { if (currid != theoreticalpeaks[i].compoundid) { - if (!matched) { + if (matched < minimumiontypes) { for (int j = start; j <= stop; j++) { if (theoreticalpeaks[j].matched > 0) { experimentalmatches[theoreticalpeaks[j].matchedid].erase(experimentalmatches[theoreticalpeaks[j].matchedid].find(j)); @@ -1175,22 +1547,24 @@ void cTheoreticalSpectrum::removeUnmatchedCompounds(cPeaksList& theoreticalpeaks theoreticalpeaks[j].matched--; theoreticalpeaks[j].matchedid = -1; + + peaksremoved++; } } } currid = theoreticalpeaks[i].compoundid; start = i; - matched = true; + matched = 0; } - if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched == 0)) { - matched = false; + if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0)) { + matched++; } stop = i; } - if (!matched) { + if (matched < minimumiontypes) { for (int j = start; j <= stop; j++) { if (theoreticalpeaks[j].matched > 0) { experimentalmatches[theoreticalpeaks[j].matchedid].erase(experimentalmatches[theoreticalpeaks[j].matchedid].find(j)); @@ -1198,6 +1572,545 @@ void cTheoreticalSpectrum::removeUnmatchedCompounds(cPeaksList& theoreticalpeaks theoreticalpeaks[j].matched--; theoreticalpeaks[j].matchedid = -1; + + peaksremoved++; + } + } + } + + return peaksremoved; +} + + +void cTheoreticalSpectrum::removeUnmatchedPatternsFineSpectra(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks) { + if (theoreticalpeaksrealsize == 0) { + return; + } + + int groupid = theoreticalpeaks[0].groupid; + int start = 0; + int stop = 0; + int maximumintensityid = 0; + double maximumintensity = theoreticalpeaks[0].relativeintensity; + bool cleargroup = false; + + int langle = 0; + int rangle = 0; + double fwhmthreshold = 0.001; + double mzdiff; + string subdesc; + + bool hasS = false; + bool hasK = false; + bool hasFe = false; + + int posS = -1; + int posK = -1; + int posFe = -1; + + double maximumexperimentalintensity; + if (theoreticalpeaks[maximumintensityid].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[maximumintensityid].matchedid].relativeintensity; + } + + langle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind('('); + rangle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind(')'); + if ((langle != string::npos) && (rangle != string::npos)) { + subdesc = parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].substr(langle + 1, rangle - langle - 1); + if (subdesc.find("Fe") != string::npos) { + hasFe = true; + } + if (parameters->fwhm <= fwhmthreshold) { + if (subdesc.find("S") != string::npos) { + hasS = true; + } + if (subdesc.find("K") != string::npos) { + hasK = true; + } + } + } + + /* + if (parameters->fwhm <= fwhmthreshold) { + langle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind('('); + rangle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind(')'); + if ((langle != string::npos) && (rangle != string::npos)) { + subdesc = parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].substr(langle + 1, rangle - langle - 1); + if (subdesc.find("Fe") != string::npos) { + hasFe = true; + } + if (subdesc.find("S") != string::npos) { + hasS = true; + } + if (subdesc.find("K") != string::npos) { + hasK = true; + } + } + } + else { + if ((theoreticalpeaks[start].iontype == ms_MFe2H) + || (theoreticalpeaks[start].iontype == ms_MFe3HNa) + || (theoreticalpeaks[start].iontype == ms_MFe3HK) + || (theoreticalpeaks[start].iontype == ms_2MFe2H) + || (theoreticalpeaks[start].iontype == ms_2MFe3HNa) + || (theoreticalpeaks[start].iontype == ms_2MFe3HK) + || (theoreticalpeaks[start].iontype == ms_3MFe2H) + || (theoreticalpeaks[start].iontype == ms_3MFe3HNa) + || (theoreticalpeaks[start].iontype == ms_3MFe3HK) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe5H) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe6HNa) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe6HK) + || (theoreticalpeaks[start].iontype == ms_MFe4H) + || (theoreticalpeaks[start].iontype == ms_2MFe4H) + || (theoreticalpeaks[start].iontype == ms_3MFe4H) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe7H) + ) { + hasFe = true; + } + } + */ + + for (int i = 0; i < theoreticalpeaksrealsize; i++) { + + if (groupid == theoreticalpeaks[i].groupid) { + if (theoreticalpeaks[i].relativeintensity > maximumintensity) { + maximumintensityid = i; + maximumintensity = theoreticalpeaks[i].relativeintensity; + if (theoreticalpeaks[i].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[i].matchedid].relativeintensity; + } + } + + stop = i; + } + + if ((groupid != theoreticalpeaks[i].groupid) || (i == theoreticalpeaksrealsize - 1)) { + + /* + if ((theoreticalpeaks[start].iontype == ms_MFe2H) || (theoreticalpeaks[start].iontype == ms_MFe3HNa) || (theoreticalpeaks[start].iontype == ms_MFe3HK)) { + + if ((theoreticalpeaks[start].matched == 0) && (theoreticalpeaks[maximumintensityid].matched > 0)) { + cleargroup = true; + } + + if ((theoreticalpeaks[start].matched > 0) && (theoreticalpeaks[maximumintensityid].matched > 0)) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + if (theoreticalpeaks[start].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) { + if (experimentalpeaks[theoreticalpeaks[start].matchedid].relativeintensity > 0.1 * maximumexperimentalintensity) { + cleargroup = true; + } + } + else { + cleargroup = true; + } + } + } + + } + */ + + if (hasFe) { + if (theoreticalpeaks[maximumintensityid].matched > 0) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + for (int j = start; j <= stop; j++) { + if (theoreticalpeaks[j].matched > 0) { + mzdiff = fabs(uncharge(theoreticalpeaks[j].mzratio, theoreticalpeaks[j].charge) - uncharge(theoreticalpeaks[maximumintensityid].mzratio, theoreticalpeaks[maximumintensityid].charge) - Fe54 + Fe56); + if (mzdiff < 0.1) { + if (parameters->peakidtodesc[theoreticalpeaks[j].descriptionid].find("\\[") == string::npos) { + if (parameters->peakidtodesc[theoreticalpeaks[j].descriptionid].find(" 54Fe ") != string::npos) { + posFe = j; + break; + } + } + } + } + } + } + } + + if (posFe == -1) { + cleargroup = true; + } + else { + if ((theoreticalpeaks[posFe].matched > 0) && (theoreticalpeaks[maximumintensityid].matched > 0)) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + if (theoreticalpeaks[posFe].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) { + if (experimentalpeaks[theoreticalpeaks[posFe].matchedid].relativeintensity > 0.1 * maximumexperimentalintensity) { + cleargroup = true; + } + } + else { + cleargroup = true; + } + } + } + } + } + + if (parameters->fwhm <= fwhmthreshold) { + + if (hasS) { + if (theoreticalpeaks[maximumintensityid].matched > 0) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + for (int j = start; j <= stop; j++) { + if (theoreticalpeaks[j].matched > 0) { + mzdiff = fabs(uncharge(theoreticalpeaks[j].mzratio, theoreticalpeaks[j].charge) - uncharge(theoreticalpeaks[maximumintensityid].mzratio, theoreticalpeaks[maximumintensityid].charge) - S34 + S32); + if (mzdiff < 0.1) { + if (parameters->peakidtodesc[theoreticalpeaks[j].descriptionid].find("\\[") == string::npos) { + if (parameters->peakidtodesc[theoreticalpeaks[j].descriptionid].find(" 34S ") != string::npos) { + posS = j; + break; + } + } + } + } + } + } + } + + if (posS == -1) { + cleargroup = true; + } + else { + if ((theoreticalpeaks[posS].matched > 0) && (theoreticalpeaks[maximumintensityid].matched > 0)) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + if (theoreticalpeaks[posS].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) { + if (experimentalpeaks[theoreticalpeaks[posS].matchedid].relativeintensity > 0.1 * maximumexperimentalintensity) { + cleargroup = true; + } + } + else { + cleargroup = true; + } + } + } + } + } + + if (hasK) { + if (theoreticalpeaks[maximumintensityid].matched > 0) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + for (int j = start; j <= stop; j++) { + if (theoreticalpeaks[j].matched > 0) { + mzdiff = fabs(uncharge(theoreticalpeaks[j].mzratio, theoreticalpeaks[j].charge) - uncharge(theoreticalpeaks[maximumintensityid].mzratio, theoreticalpeaks[maximumintensityid].charge) - K41 + K39); + if (mzdiff < 0.1) { + if (parameters->peakidtodesc[theoreticalpeaks[j].descriptionid].find("\\[") == string::npos) { + if (parameters->peakidtodesc[theoreticalpeaks[j].descriptionid].find(" 41K ") != string::npos) { + posK = j; + break; + } + } + } + } + } + } + } + + if (posK == -1) { + cleargroup = true; + } + else { + if ((theoreticalpeaks[posK].matched > 0) && (theoreticalpeaks[maximumintensityid].matched > 0)) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + if (theoreticalpeaks[posK].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) { + if (experimentalpeaks[theoreticalpeaks[posK].matchedid].relativeintensity > 0.1 * maximumexperimentalintensity) { + cleargroup = true; + } + } + else { + cleargroup = true; + } + } + } + } + } + + } + + if (cleargroup) { + for (int j = start; j <= stop; j++) { + if (theoreticalpeaks[j].matched > 0) { + experimentalmatches[theoreticalpeaks[j].matchedid].erase(experimentalmatches[theoreticalpeaks[j].matchedid].find(j)); + experimentalpeaks[theoreticalpeaks[j].matchedid].matched--; + + theoreticalpeaks[j].matched--; + theoreticalpeaks[j].matchedid = -1; + } + } + } + + groupid = theoreticalpeaks[i].groupid; + start = i; + stop = i; + maximumintensityid = i; + maximumintensity = theoreticalpeaks[i].relativeintensity; + cleargroup = false; + + hasS = false; + hasK = false; + hasFe = false; + + posS = -1; + posK = -1; + posFe = -1; + + if (theoreticalpeaks[i].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[i].matchedid].relativeintensity; + } + + langle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind('('); + rangle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind(')'); + if ((langle != string::npos) && (rangle != string::npos)) { + subdesc = parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].substr(langle + 1, rangle - langle - 1); + if (subdesc.find("Fe") != string::npos) { + hasFe = true; + } + if (parameters->fwhm <= fwhmthreshold) { + if (subdesc.find("S") != string::npos) { + hasS = true; + } + if (subdesc.find("K") != string::npos) { + hasK = true; + } + } + } + + /* + if (parameters->fwhm <= fwhmthreshold) { + langle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind('('); + rangle = (int)parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].rfind(')'); + if ((langle != string::npos) && (rangle != string::npos)) { + subdesc = parameters->peakidtodesc[theoreticalpeaks[start].descriptionid].substr(langle + 1, rangle - langle - 1); + if (subdesc.find("Fe") != string::npos) { + hasFe = true; + } + if (subdesc.find("S") != string::npos) { + hasS = true; + } + if (subdesc.find("K") != string::npos) { + hasK = true; + } + } + } + else { + if ((theoreticalpeaks[start].iontype == ms_MFe2H) + || (theoreticalpeaks[start].iontype == ms_MFe3HNa) + || (theoreticalpeaks[start].iontype == ms_MFe3HK) + || (theoreticalpeaks[start].iontype == ms_2MFe2H) + || (theoreticalpeaks[start].iontype == ms_2MFe3HNa) + || (theoreticalpeaks[start].iontype == ms_2MFe3HK) + || (theoreticalpeaks[start].iontype == ms_3MFe2H) + || (theoreticalpeaks[start].iontype == ms_3MFe3HNa) + || (theoreticalpeaks[start].iontype == ms_3MFe3HK) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe5H) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe6HNa) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe6HK) + || (theoreticalpeaks[start].iontype == ms_MFe4H) + || (theoreticalpeaks[start].iontype == ms_2MFe4H) + || (theoreticalpeaks[start].iontype == ms_3MFe4H) + //|| (theoreticalpeaks[start].iontype == ms_3M2Fe7H) + ) { + hasFe = true; + } + } + */ + + } + + } + +} + + +void cTheoreticalSpectrum::removeUnmatchedPatternsByIntensityRatio(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks) { + if (theoreticalpeaksrealsize == 0) { + return; + } + + int groupid = theoreticalpeaks[0].groupid; + int start = 0; + int stop = 0; + int maximumintensityid = 0; + double maximumintensity = theoreticalpeaks[0].relativeintensity; + //int minimummatchedintensityid = 0; + double minimummatchedintensity = DBL_MAX; + bool cleargroup = false; + + double maximumexperimentalintensity; + if (theoreticalpeaks[maximumintensityid].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[maximumintensityid].matchedid].relativeintensity; + } + + double thratio, expratio; + + for (int i = 0; i < theoreticalpeaksrealsize; i++) { + if (groupid == theoreticalpeaks[i].groupid) { + if (theoreticalpeaks[i].relativeintensity > maximumintensity) { + maximumintensityid = i; + maximumintensity = theoreticalpeaks[i].relativeintensity; + if (theoreticalpeaks[i].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[i].matchedid].relativeintensity; + } + } + + stop = i; + } + + if ((groupid != theoreticalpeaks[i].groupid) || (i == theoreticalpeaksrealsize - 1)) { + + if (theoreticalpeaks[maximumintensityid].matched > 0) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + for (int j = start; j <= stop; j++) { + if ((theoreticalpeaks[j].matched > 0) + && (theoreticalpeaks[j].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) + && (theoreticalpeaks[j].relativeintensity < minimummatchedintensity)) { + //minimummatchedintensityid = j; + minimummatchedintensity = theoreticalpeaks[j].relativeintensity; + } + } + + for (int j = start; j <= stop; j++) { + if (j == maximumintensityid) { + continue; + } + + if (theoreticalpeaks[j].matched > 0) { + if (theoreticalpeaks[j].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) { + thratio = theoreticalpeaks[j].relativeintensity / theoreticalpeaks[maximumintensityid].relativeintensity; + expratio = experimentalpeaks[theoreticalpeaks[j].matchedid].relativeintensity / experimentalpeaks[theoreticalpeaks[maximumintensityid].matchedid].relativeintensity; + + if (fabs(thratio - expratio) * 100.0 > parameters->intensitytolerance) { + cleargroup = true; + break; + } + } + } + else { + if ((parameters->fwhm >= 0.01) && (theoreticalpeaks[j].relativeintensity > minimummatchedintensity)) { + cleargroup = true; + break; + } + } + } + } + else { + cleargroup = true; + } + } + else { + cleargroup = true; + } + + if (cleargroup) { + for (int j = start; j <= stop; j++) { + if (theoreticalpeaks[j].matched > 0) { + experimentalmatches[theoreticalpeaks[j].matchedid].erase(experimentalmatches[theoreticalpeaks[j].matchedid].find(j)); + experimentalpeaks[theoreticalpeaks[j].matchedid].matched--; + + theoreticalpeaks[j].matched--; + theoreticalpeaks[j].matchedid = -1; + } + } + } + + groupid = theoreticalpeaks[i].groupid; + start = i; + stop = i; + maximumintensityid = i; + maximumintensity = theoreticalpeaks[i].relativeintensity; + //minimummatchedintensityid = i; + minimummatchedintensity = DBL_MAX; + cleargroup = false; + if (theoreticalpeaks[i].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[i].matchedid].relativeintensity; + } + } + } +} + + +void cTheoreticalSpectrum::removeUnmatchedPatternsByMZDifference(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks) { + if (theoreticalpeaksrealsize == 0) { + return; + } + + int groupid = theoreticalpeaks[0].groupid; + int start = 0; + int stop = 0; + int maximumintensityid = 0; + double maximumintensity = theoreticalpeaks[0].relativeintensity; + bool cleargroup = false; + + double maximumexperimentalintensity; + if (theoreticalpeaks[maximumintensityid].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[maximumintensityid].matchedid].relativeintensity; + } + + double thdiff, expdiff; + + for (int i = 0; i < theoreticalpeaksrealsize; i++) { + if (groupid == theoreticalpeaks[i].groupid) { + if (theoreticalpeaks[i].relativeintensity > maximumintensity) { + maximumintensityid = i; + maximumintensity = theoreticalpeaks[i].relativeintensity; + if (theoreticalpeaks[i].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[i].matchedid].relativeintensity; + } + } + + stop = i; + } + + if ((groupid != theoreticalpeaks[i].groupid) || (i == theoreticalpeaksrealsize - 1)) { + + if (theoreticalpeaks[maximumintensityid].matched > 0) { + if (maximumexperimentalintensity >= parameters->minimumrelativeintensitythreshold) { + for (int j = start; j <= stop; j++) { + if (j == maximumintensityid) { + continue; + } + + if (theoreticalpeaks[j].matched > 0) { + if (theoreticalpeaks[j].relativeintensity*maximumexperimentalintensity / 100.0 >= parameters->minimumrelativeintensitythreshold) { + thdiff = fabs(theoreticalpeaks[maximumintensityid].mzratio - theoreticalpeaks[j].mzratio); + expdiff = fabs(experimentalpeaks[theoreticalpeaks[maximumintensityid].matchedid].mzratio - experimentalpeaks[theoreticalpeaks[j].matchedid].mzratio); + + if (fabs(thdiff - expdiff) / theoreticalpeaks[maximumintensityid].mzratio * 1000000.0 > parameters->mzdifftolerance) { + cleargroup = true; + break; + } + } + } + } + } + else { + cleargroup = true; + } + } + else { + cleargroup = true; + } + + if (cleargroup) { + for (int j = start; j <= stop; j++) { + if (theoreticalpeaks[j].matched > 0) { + experimentalmatches[theoreticalpeaks[j].matchedid].erase(experimentalmatches[theoreticalpeaks[j].matchedid].find(j)); + experimentalpeaks[theoreticalpeaks[j].matchedid].matched--; + + theoreticalpeaks[j].matched--; + theoreticalpeaks[j].matchedid = -1; + } + } + } + + groupid = theoreticalpeaks[i].groupid; + start = i; + stop = i; + maximumintensityid = i; + maximumintensity = theoreticalpeaks[i].relativeintensity; + cleargroup = false; + if (theoreticalpeaks[i].matched) { + maximumexperimentalintensity = experimentalpeaks[theoreticalpeaks[i].matchedid].relativeintensity; } } } @@ -1770,7 +2683,7 @@ void cTheoreticalSpectrum::clear(bool clearpeaklist) { coveragebyseries = ""; valid = false; sumofrelativeintensities = 0; - visualcoverage.clear(); + rotationslabels.clear(); validposition = -1; reversevalidposition = -1; @@ -1873,7 +2786,7 @@ int cTheoreticalSpectrum::compareBranched(cPeaksList& sortedpeaklist, cBricksDat // coverage of series - vector > > > series; + /*vector > > > series; series.resize(trotations.size()); for (int i = 0; i < (int)series.size(); i++) { @@ -1895,12 +2808,12 @@ int cTheoreticalSpectrum::compareBranched(cPeaksList& sortedpeaklist, cBricksDat } for (int i = 0; i < theoreticalpeaksrealsize; i++) { - if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) && (theoreticalpeaks[i].rotationid >= 0) + if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) && (theoreticalpeaks[i].rotationid >= 0) && (theoreticalpeaks[i].seriesid >= 0) && (series[theoreticalpeaks[i].rotationid].count(theoreticalpeaks[i].iontype) == 1) && (series[theoreticalpeaks[i].rotationid][theoreticalpeaks[i].iontype].count(theoreticalpeaks[i].neutrallosstype) == 1)) { series[theoreticalpeaks[i].rotationid][theoreticalpeaks[i].iontype][theoreticalpeaks[i].neutrallosstype][theoreticalpeaks[i].seriesid]++; } - } + }*/ // peak hits without parents are removed @@ -1941,16 +2854,15 @@ int cTheoreticalSpectrum::compareBranched(cPeaksList& sortedpeaklist, cBricksDat normalizeTheoreticalIntensities(theoreticalpeaks, theoreticalpeaksrealsize); } - visualcoverage.clear(); - visualSeries tempseries; - bool reportrow; - coveragebyseries = "Linearized sequences:
"; for (int i = 0; i < (int)trotations.size(); i++) { coveragebyseries += to_string(i + 1) + " ~ " + bricksdatabasewithcombinations.getAcronymNameOfTPeptide(trotations[i].tcomposition, false) + "
"; } coveragebyseries += "
"; + /*matchedSeries tempseries; + bool reportrow; + if (parameters->ionsfortheoreticalspectra.size() > 0) { coveragebyseries += "Series of matched peaks:"; coveragebyseries += ""; @@ -1987,13 +2899,12 @@ int cTheoreticalSpectrum::compareBranched(cPeaksList& sortedpeaklist, cBricksDat if (reportrow) { coveragebyseries += ""; } - visualcoverage.push_back(tempseries); } } coveragebyseries += ""; } coveragebyseries += "
ionsfortheoreticalspectra[0]][-1].size()) + "\"> 
"; - } + }*/ } @@ -2071,7 +2982,7 @@ int cTheoreticalSpectrum::compareLinear(cPeaksList& sortedpeaklist, cBricksDatab // coverage of series - map > > series; + /*map > > series; for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { @@ -2088,12 +2999,12 @@ int cTheoreticalSpectrum::compareLinear(cPeaksList& sortedpeaklist, cBricksDatab } for (int i = 0; i < theoreticalpeaksrealsize; i++) { - if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) + if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) && (theoreticalpeaks[i].seriesid >= 0) && (series.count(theoreticalpeaks[i].iontype) == 1) && (series[theoreticalpeaks[i].iontype].count(theoreticalpeaks[i].neutrallosstype) == 1)) { series[theoreticalpeaks[i].iontype][theoreticalpeaks[i].neutrallosstype][theoreticalpeaks[i].seriesid]++; } - } + }*/ // peak hits without parents are removed @@ -2132,8 +3043,7 @@ int cTheoreticalSpectrum::compareLinear(cPeaksList& sortedpeaklist, cBricksDatab normalizeTheoreticalIntensities(theoreticalpeaks, theoreticalpeaksrealsize); } - visualcoverage.clear(); - visualSeries tempseries; + /*matchedSeries tempseries; bool reportrow; if (parameters->ionsfortheoreticalspectra.size() > 0) { @@ -2170,11 +3080,10 @@ int cTheoreticalSpectrum::compareLinear(cPeaksList& sortedpeaklist, cBricksDatab if (reportrow) { coveragebyseries += ""; } - visualcoverage.push_back(tempseries); } } coveragebyseries += ""; - } + }*/ } @@ -2310,7 +3219,7 @@ int cTheoreticalSpectrum::compareCyclic(cPeaksList& sortedpeaklist, cBricksDatab // coverage of series - vector > > > series; + /*vector > > > series; series.resize(rotations.size()); for (int i = 0; i < (int)series.size(); i++) { @@ -2332,12 +3241,12 @@ int cTheoreticalSpectrum::compareCyclic(cPeaksList& sortedpeaklist, cBricksDatab } for (int i = 0; i < theoreticalpeaksrealsize; i++) { - if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) && (theoreticalpeaks[i].rotationid >= 0) + if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) && (theoreticalpeaks[i].rotationid >= 0) && (theoreticalpeaks[i].seriesid >= 0) && (series[theoreticalpeaks[i].rotationid].count(theoreticalpeaks[i].iontype) == 1) && (series[theoreticalpeaks[i].rotationid][theoreticalpeaks[i].iontype].count(theoreticalpeaks[i].neutrallosstype) == 1)) { series[theoreticalpeaks[i].rotationid][theoreticalpeaks[i].iontype][theoreticalpeaks[i].neutrallosstype][theoreticalpeaks[i].seriesid]++; } - } + }*/ // peak hits without parents are removed @@ -2433,19 +3342,23 @@ int cTheoreticalSpectrum::compareCyclic(cPeaksList& sortedpeaklist, cBricksDatab normalizeTheoreticalIntensities(theoreticalpeaks, theoreticalpeaksrealsize); } - visualcoverage.clear(); - visualSeries tempseries; - bool reportrow; + string rotationlabel; + rotationslabels.clear(); coveragebyseries = "Linearized sequences from all ring break up points:
"; for (int i = 0; i < (int)rotations.size(); i++) { if (i == r) { coveragebyseries += "
"; } - coveragebyseries += to_string(splittingsites[i].first + 1) + "-" + to_string(splittingsites[i].second + 1) + " " + bricksdatabasewithcombinations.getAcronymName(rotations[i], false) + "
"; + rotationlabel = to_string(splittingsites[i].first + 1) + "-" + to_string(splittingsites[i].second + 1); + rotationslabels.push_back(rotationlabel); + coveragebyseries += rotationlabel + " " + bricksdatabasewithcombinations.getAcronymName(rotations[i], false) + "
"; } coveragebyseries += "
"; + /*matchedSeries tempseries; + bool reportrow; + if (parameters->ionsfortheoreticalspectra.size() > 0) { coveragebyseries += "Series of matched peaks:"; coveragebyseries += ""; @@ -2482,13 +3395,12 @@ int cTheoreticalSpectrum::compareCyclic(cPeaksList& sortedpeaklist, cBricksDatab if (reportrow) { coveragebyseries += ""; } - visualcoverage.push_back(tempseries); } } coveragebyseries += ""; } coveragebyseries += "
ionsfortheoreticalspectra[0]][-1].size()) + "\"> 
"; - } + }*/ } @@ -2653,7 +3565,7 @@ int cTheoreticalSpectrum::compareBranchCyclic(cPeaksList& sortedpeaklist, cBrick // coverage of series - vector > > > > series; + /*vector > > > > series; series.resize(branchcyclicrotations.size()); for (int i = 0; i < (int)branchcyclicrotations.size(); i++) { series[i].resize(6); @@ -2679,7 +3591,7 @@ int cTheoreticalSpectrum::compareBranchCyclic(cPeaksList& sortedpeaklist, cBrick } for (int j = 0; j < theoreticalpeaksrealsize; j++) { - if (!theoreticalpeaks[j].isotope && (theoreticalpeaks[j].matched > 0) && (theoreticalpeaks[j].rotationid >= 0) + if (!theoreticalpeaks[j].isotope && (theoreticalpeaks[j].matched > 0) && (theoreticalpeaks[j].rotationid >= 0) && (theoreticalpeaks[j].seriesid >= 0) && (series[i][theoreticalpeaks[j].rotationid % 6].count(theoreticalpeaks[j].iontype) == 1) && (series[i][theoreticalpeaks[j].rotationid % 6][theoreticalpeaks[j].iontype].count(theoreticalpeaks[j].neutrallosstype) == 1)) { if (i == theoreticalpeaks[j].rotationid / 6) { @@ -2687,7 +3599,7 @@ int cTheoreticalSpectrum::compareBranchCyclic(cPeaksList& sortedpeaklist, cBrick } } } - } + }*/ // peak hits without parents are removed @@ -2730,14 +3642,15 @@ int cTheoreticalSpectrum::compareBranchCyclic(cPeaksList& sortedpeaklist, cBrick normalizeTheoreticalIntensities(theoreticalpeaks, theoreticalpeaksrealsize); } - visualcoverage.clear(); - visualSeries tempseries; - bool reportrow; + string rotationlabel; + rotationslabels.clear(); coveragebyseries = "Linearized sequences from all ring break up points:
"; for (int i = 0; i < (int)branchcyclicrotations.size(); i++) { + rotationlabel = to_string(splittingsites[i].first + 1) + "-" + to_string(splittingsites[i].second + 1); + rotationslabels.push_back(rotationlabel); for (int j = 0; j < (int)trotationsofbranchcyclicrotations[i].size(); j++) { - coveragebyseries += to_string(splittingsites[i].first + 1) + "-" + to_string(splittingsites[i].second + 1) + "_"; + coveragebyseries += rotationlabel + "_"; coveragebyseries += to_string(j + 1) + " ~ "; coveragebyseries += bricksdatabasewithcombinations.getAcronymNameOfTPeptide(trotationsofbranchcyclicrotations[i][j].tcomposition, false); coveragebyseries += "
"; @@ -2745,6 +3658,9 @@ int cTheoreticalSpectrum::compareBranchCyclic(cPeaksList& sortedpeaklist, cBrick coveragebyseries += "
"; } + /*matchedSeries tempseries; + bool reportrow; + if (parameters->ionsfortheoreticalspectra.size() > 0) { coveragebyseries += "Series of matched peaks:"; coveragebyseries += ""; @@ -2783,14 +3699,13 @@ int cTheoreticalSpectrum::compareBranchCyclic(cPeaksList& sortedpeaklist, cBrick if (reportrow) { coveragebyseries += ""; } - visualcoverage.push_back(tempseries); } } coveragebyseries += ""; } } coveragebyseries += "
ionsfortheoreticalspectra[0]][-1].size()) + "\"> 
"; - } + }*/ } @@ -2898,7 +3813,7 @@ int cTheoreticalSpectrum::compareLinearPolyketide(cPeaksList& sortedpeaklist, cB // coverage of series - map > > series; + /*map > > series; for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { @@ -2915,12 +3830,12 @@ int cTheoreticalSpectrum::compareLinearPolyketide(cPeaksList& sortedpeaklist, cB } for (int i = 0; i < theoreticalpeaksrealsize; i++) { - if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) + if (!theoreticalpeaks[i].isotope && (theoreticalpeaks[i].matched > 0) && (theoreticalpeaks[i].seriesid >= 0) && (series.count(theoreticalpeaks[i].iontype) == 1) && (series[theoreticalpeaks[i].iontype].count(theoreticalpeaks[i].neutrallosstype) == 1)) { series[theoreticalpeaks[i].iontype][theoreticalpeaks[i].neutrallosstype][theoreticalpeaks[i].seriesid]++; } - } + }*/ // peak hits without parents are removed @@ -2959,8 +3874,7 @@ int cTheoreticalSpectrum::compareLinearPolyketide(cPeaksList& sortedpeaklist, cB normalizeTheoreticalIntensities(theoreticalpeaks, theoreticalpeaksrealsize); } - visualcoverage.clear(); - visualSeries tempseries; + /*matchedSeries tempseries; bool reportrow; if (parameters->ionsfortheoreticalspectra.size() > 0) { @@ -2997,11 +3911,10 @@ int cTheoreticalSpectrum::compareLinearPolyketide(cPeaksList& sortedpeaklist, cB if (reportrow) { coveragebyseries += ""; } - visualcoverage.push_back(tempseries); } } coveragebyseries += ""; - } + }*/ } @@ -3023,7 +3936,54 @@ int cTheoreticalSpectrum::compareCyclicPolyketide(cPeaksList& sortedpeaklist, cB } -void cTheoreticalSpectrum::generateMSSpectrum(bool writedescription) { +int cTheoreticalSpectrum::compareOther(cPeaksList& sortedpeaklist, bool writedescription, cPeaksList& unmatchedpeaksinmatchedpatterns, unordered_map* isotopeformuladesctoid) { + + int theoreticalpeaksrealsize = 0; + + // initialize the experimental peaklist + experimentalpeaks = sortedpeaklist; + + generatePrecursorIonForOther(theoreticalpeaksrealsize, writedescription); + + if (parameters->generateisotopepattern) { + generateFragmentIsotopePatterns(theoreticalpeaksrealsize, writedescription, isotopeformuladesctoid); + } + + // search the theoretical peaks in the experimental peak list + experimentalmatches.clear(); + searchForPeakPairs(theoreticalpeaks, theoreticalpeaksrealsize, experimentalpeaks, parameters->fragmentmasserrortolerance); + + if (parameters->generateisotopepattern) { + removeUnmatchedIsotopePatterns(theoreticalpeaks, theoreticalpeaksrealsize, experimentalpeaks, unmatchedpeaksinmatchedpatterns, writedescription && !parameters->reportunmatchedtheoreticalpeaks); + } + + if (!parameters->generateisotopepattern) { + removeUnmatchedMetalIsotopes(theoreticalpeaks, theoreticalpeaksrealsize, experimentalpeaks); + } + + fillExperimentalAnnotationsAndRemoveUnmatchedTheoreticalPeaks(theoreticalpeaksrealsize, other, unmatchedpeaksinmatchedpatterns, parameters->reportunmatchedtheoreticalpeaks, writedescription); + + if (writedescription) { + + theoreticalpeaks.fillOrderIDs(); + + if (parameters->generateisotopepattern) { + if (!parameters->reportunmatchedtheoreticalpeaks) { + theoreticalpeaks.sortbyGroupId(); + } + normalizeTheoreticalIntensities(theoreticalpeaks, theoreticalpeaksrealsize); + } + + } + + computeStatistics(writedescription); + + return theoreticalpeaksrealsize; + +} + + +void cTheoreticalSpectrum::generateMSSpectrum(bool& terminatecomputation, bool writedescription) { cPeak peak; cSummaryFormula formula; regex rx; @@ -3045,6 +4005,12 @@ void cTheoreticalSpectrum::generateMSSpectrum(bool writedescription) { int theoreticalpeaksrealsize = 0; for (int i = 0; i < parameters->sequencedatabase.size(); i++) { + if (terminatecomputation) { + theoreticalpeaks.clear(); + theoreticalpeaksrealsize = 0; + return; + } + peak.clear(); peak.compoundid = i; peak.isotope = false; @@ -3058,6 +4024,10 @@ void cTheoreticalSpectrum::generateMSSpectrum(bool writedescription) { for (int m = 0; m < abs(parameters->precursorcharge); m++) { + peak.iontype = parameters->ionsfortheoreticalspectra[j]; + peak.neutrallosstype = (k >= 0) ? parameters->neutrallossesfortheoreticalspectra[k] : -1; + peak.charge = (parameters->precursorcharge > 0) ? m + 1 : -(m + 1); + peak.mzratio = (double)parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].multiplier*formula.getMass() + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].massdifference; if (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].positive) { peak.mzratio += (double)m*(H - e); @@ -3100,7 +4070,7 @@ void cTheoreticalSpectrum::generateMSSpectrum(bool writedescription) { } -void cTheoreticalSpectrum::generateFineMSSpectrum() { +void cTheoreticalSpectrum::generateFineMSSpectrum(bool& terminatecomputation) { cSummaryFormula formula; string proton = "H+"; string description; @@ -3118,6 +4088,11 @@ void cTheoreticalSpectrum::generateFineMSSpectrum() { sequence.setDecoy(true); for (int i = 0; i < seqdbsize; i++) { + if (terminatecomputation) { + parameters->sequencedatabase.clear(); + return; + } + summary = parameters->sequencedatabase[i].getSummaryFormula() + "H"; sequence.setSummaryFormula(summary); parameters->sequencedatabase.push_back(sequence); @@ -3125,6 +4100,12 @@ void cTheoreticalSpectrum::generateFineMSSpectrum() { for (int i = 0; i < parameters->sequencedatabase.size(); i++) { + if (terminatecomputation) { + theoreticalpeaks.clear(); + theoreticalpeaksrealsize = 0; + return; + } + formula.clear(); formula.setFormula(parameters->sequencedatabase[i].getSummaryFormula()); @@ -3176,6 +4157,9 @@ void cTheoreticalSpectrum::generateFineMSSpectrum() { cPeaksList isotopepattern = chargedformula.getIsotopePattern(parameters->fwhm, n + 1, parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].positive, true); for (int p = 0; p < isotopepattern.size(); p++) { isotopepattern[p].description = description + isotopepattern[p].description + "): "; + isotopepattern[p].iontype = parameters->ionsfortheoreticalspectra[j]; + isotopepattern[p].neutrallosstype = (k >= 0) ? parameters->neutrallossesfortheoreticalspectra[k] : -1; + isotopepattern[p].charge = (parameters->precursorcharge > 0) ? n + 1 : -(n + 1); isotopepattern[p].groupid = groupid; isotopepattern[p].compoundid = i; isotopepattern[p].decoy = parameters->sequencedatabase[i].isDecoy(); @@ -3195,7 +4179,51 @@ void cTheoreticalSpectrum::generateFineMSSpectrum() { } -void cTheoreticalSpectrum::compareMSSpectrum(int id, cTheoreticalSpectrum& tsfull, cPeaksList& unmatchedpeaksinmatchedpatterns) { +void cTheoreticalSpectrum::getHintsIndex(int id, cTheoreticalSpectrum& tsfull, cPeaksList& unmatchedpeaksinmatchedpatterns, vector< vector >& hintsindex) { + experimentalpeaks = parameters->peaklistseries[id]; + + cPeaksList* tsfullpeaklist = tsfull.getTheoreticalPeaks(); + + experimentalmatches.clear(); + searchForPeakPairs(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, parameters->fragmentmasserrortolerance); + + if (parameters->generateisotopepattern) { + if (parameters->minimumpatternsize > 1) { + removeUnmatchedPatternsFineSpectra(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + if (parameters->intensitytolerance > 0) { + removeUnmatchedPatternsByIntensityRatio(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + if (parameters->mzdifftolerance > 0) { + removeUnmatchedPatternsByMZDifference(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + } + + // clear matched isotopes of unmatched monoisotopic peaks + unmatchedpeaksinmatchedpatterns.clear(); + if (parameters->generateisotopepattern) { + removeUnmatchedIsotopePatterns(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, unmatchedpeaksinmatchedpatterns, false); + } + else { + removeUnmatchedMetalIsotopes(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + + if (parameters->generateisotopepattern) { + removeDecoyPeakMatches(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + + for (int i = 0; i < (int)experimentalpeaks.size(); i++) { + for (auto it = experimentalmatches[i].begin(); it != experimentalmatches[i].end(); ++it) { + hintsindex[*it].push_back(id); + + (*tsfullpeaklist)[*it].matched = 0; + (*tsfullpeaklist)[*it].matchedid = -1; + } + } +} + + +void cTheoreticalSpectrum::compareMSSpectrum(int id, cTheoreticalSpectrum& tsfull, cPeaksList& unmatchedpeaksinmatchedpatterns, vector< vector >& hintsindex) { experimentalpeaks = parameters->peaklistseries[id]; cPeaksList* tsfullpeaklist = tsfull.getTheoreticalPeaks(); @@ -3203,48 +4231,48 @@ void cTheoreticalSpectrum::compareMSSpectrum(int id, cTheoreticalSpectrum& tsful experimentalmatches.clear(); searchForPeakPairs(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, parameters->fragmentmasserrortolerance); + if (parameters->generateisotopepattern) { + if (parameters->minimumpatternsize > 1) { + removeUnmatchedPatternsFineSpectra(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + if (parameters->intensitytolerance > 0) { + removeUnmatchedPatternsByIntensityRatio(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + if (parameters->mzdifftolerance > 0) { + removeUnmatchedPatternsByMZDifference(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + } + } + bool lcms = (parameters->peaklistseries.size() > 1) && !((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)); // pre-cleaning (relative intensity threshold, minimumpatternsize) if (parameters->generateisotopepattern) { - if (parameters->allionsmustbepresent || (lcms && (parameters->minimumfeaturesize > 1))) { + if ((parameters->minimumiontypes > 1) || (lcms && (parameters->minimumfeaturesize > 1))) { removeUnmatchedIsotopePatterns(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, unmatchedpeaksinmatchedpatterns, false); } } // mark isotopes if (parameters->generateisotopepattern) { - if ((parameters->allionsmustbepresent) || (lcms && (parameters->minimumfeaturesize > 1))) { + if ((parameters->minimumiontypes > 1) || (lcms && (parameters->minimumfeaturesize > 1))) { tsfullpeaklist->markIsotopes(); } } - // LC-MS data - if (lcms) { - if (parameters->minimumfeaturesize > 1) { - if (parameters->allionsmustbepresent) { - removeUnmatchedFeaturesAndCompounds(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, id); - } - else { - removeUnmatchedFeatures(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, id); - } - } - else { - if (parameters->allionsmustbepresent) { - removeUnmatchedCompounds(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); - } - } + // LC-MS data or MSI data + if (lcms || (parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { + removeUnmatchedFeatures(lcms, *tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, hintsindex/*, id*/); } - // direct MS or MSI data + // direct MS else { - if (parameters->allionsmustbepresent) { - removeUnmatchedCompounds(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks); + if (parameters->minimumiontypes > 1) { + removeUnmatchedCompounds(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, parameters->minimumiontypes); } } // clear marks of isotopes if (parameters->generateisotopepattern) { - if ((parameters->allionsmustbepresent) || (lcms && (parameters->minimumfeaturesize > 1))) { + if ((parameters->minimumiontypes > 1) || (lcms && (parameters->minimumfeaturesize > 1))) { tsfullpeaklist->setIsotopeFlags(false); } } @@ -3252,7 +4280,6 @@ void cTheoreticalSpectrum::compareMSSpectrum(int id, cTheoreticalSpectrum& tsful // clear matched isotopes of unmatched monoisotopic peaks unmatchedpeaksinmatchedpatterns.clear(); if (parameters->generateisotopepattern) { - // performs also an additional cleaning of isotopes if removeUnmatchedFeatures is used removeUnmatchedIsotopePatterns(*tsfullpeaklist, tsfull.getNumberOfPeaks(), experimentalpeaks, unmatchedpeaksinmatchedpatterns, true); } else { @@ -3423,12 +4450,19 @@ double cTheoreticalSpectrum::getRatioOfMatchedPeaks() { void cTheoreticalSpectrum::generateNTerminalFragmentIons(int maxcharge, int& peaklistrealsize, vector& intcomposition, eFragmentIonType fragmentiontype, int neutrallosstype, cBricksDatabase& bricksdatabase, bool writedescription, int rotationid, vector& splittingsites, vector& searchedmodifications, ePeptideType peptidetype, bool regularblocksorder, TRotationInfo* trotation, eResidueLossType leftresiduelosstype, bool hasfirstblockartificial) { cPeak peak; map atoms; - atoms.clear(); - vector internalcomposition; - map tmpmap; + vector currentlosses; + vector fragmentlossmass; + vector fragmentlosssummary; + vector< map > fragmentlossmap; + double tmpmz; - int tmprotationid; + map tmpmap; + + //int tmprotationid; + //int tmpseriesid; + + bool skipcommonfragments; bool disablesummary = false; if ((parameters->mode == denovoengine) && (parameters->blindedges == 2) && bricksdatabase[intcomposition[0] - 1].isArtificial()) { @@ -3511,6 +4545,8 @@ void cTheoreticalSpectrum::generateNTerminalFragmentIons(int maxcharge, int& pea disablesummary = true; } + updateListOfNeutralLosses(bricksdatabase, bricksdatabase[intcomposition[i] - 1], currentlosses, fragmentlossmass, fragmentlosssummary, fragmentlossmap, writedescription, disablesummary); + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { mergeMaps(bricksdatabase[intcomposition[i] - 1].getSummaryMap(), atoms); } @@ -3524,7 +4560,12 @@ void cTheoreticalSpectrum::generateNTerminalFragmentIons(int maxcharge, int& pea } if ((i >= trotation->middlebranchstart) && (i < trotation->middlebranchend)) { - if (!(parameters->internalfragments && (peptidetype == branchcyclic) && (trotation->id == 0))) { + if (parameters->internalfragments) { + if (!((peptidetype == branchcyclic) && (trotation->id == 0))) { + continue; + } + } + else { continue; } } @@ -3601,92 +4642,88 @@ void cTheoreticalSpectrum::generateNTerminalFragmentIons(int maxcharge, int& pea peak.seriesid = i; - if (writedescription) { - - peak.description = ""; - if ((peptidetype == cyclic) || (peptidetype == cyclicpolyketide) || (peptidetype == branched) || (peptidetype == branchcyclic)) { - peak.description += prefixstr; - } - if ((peptidetype == linearpolyketide) || (peptidetype == cyclicpolyketide)) { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 2) + to_string(i + 1); - if (parameters->iondefinitions[fragmentiontype].name.size() > 2) { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(2, parameters->iondefinitions[fragmentiontype].name.length() - 2); - } - } - else { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 1) + to_string(i + 1); - if (parameters->iondefinitions[fragmentiontype].name.size() > 1) { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(1, parameters->iondefinitions[fragmentiontype].name.length() - 1); - } - } - if (peak.neutrallosstype >= 0) { - peak.description += "-" + parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; - } - addAdductToDescription(peak.description, parameters->metaladducts); - peak.description += ": "; - for (int j = 0; j <= i; j++) { - peak.description += "[" + bricksdatabase[intcomposition[j] - 1].getAcronymsAsString() + "]"; - if (j < i) { - peak.description += '-'; - } - } - - } - - generateChargedFragments(peak, atoms, peaklistrealsize, maxcharge, writedescription, disablesummary); + skipcommonfragments = (trotation && (i >= trotation->middlebranchstart) && (i < trotation->middlebranchend) && (peptidetype == branchcyclic) && (trotation->id == 0)); - if (parameters->internalfragments && (peptidetype == branchcyclic) && (trotation->id == 0)) { - if ((i >= trotation->middlebranchstart) && (i < trotation->middlebranchend)) { - internalcomposition.clear(); - for (int j = 0; j <= i; j++) { - internalcomposition.push_back(intcomposition[j]); - } + if (!skipcommonfragments) { + tmpmz = peak.mzratio; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { tmpmap = atoms; - tmpmz = peak.mzratio; - tmprotationid = peak.rotationid; - - peak.rotationid = -1; - peak.seriesid = -1; - - for (int j = trotation->middlebranchend + 1; j < (int)intcomposition.size() - 1; j++) { - internalcomposition.push_back(intcomposition[j]); + } - peak.mzratio += bricksdatabase[intcomposition[j] - 1].getMass(); - if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { - mergeMaps(bricksdatabase[intcomposition[j] - 1].getSummaryMap(), tmpmap); - } + //tmprotationid = peak.rotationid; + //tmpseriesid = peak.seriesid; - if (writedescription) { - peak.description = "internal "; + for (int j = -1; j < (int)fragmentlossmass.size(); j++) { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 1) + to_string((int)internalcomposition.size()); - //if (parameters->iondefinitions[fragmentiontype].name.size() > 1) { - // peak.description += parameters->iondefinitions[fragmentiontype].name.substr(1, parameters->iondefinitions[fragmentiontype].name.length() - 1); - //} + if (writedescription) { + peak.description = ""; + if ((peptidetype == cyclic) || (peptidetype == cyclicpolyketide) || (peptidetype == branched) || (peptidetype == branchcyclic)) { + peak.description += prefixstr; + } + if ((peptidetype == linearpolyketide) || (peptidetype == cyclicpolyketide)) { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 2) + to_string(i + 1); + if (parameters->iondefinitions[fragmentiontype].name.size() > 2) { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(2, parameters->iondefinitions[fragmentiontype].name.length() - 2); + } + } + else { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 1) + to_string(i + 1); + if (parameters->iondefinitions[fragmentiontype].name.size() > 1) { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(1, parameters->iondefinitions[fragmentiontype].name.length() - 1); + } + } + if ((peak.neutrallosstype >= 0) || (j >= 0)) { + peak.description += " -"; + if (j >= 0) { + peak.description += fragmentlosssummary[j]; + } if (peak.neutrallosstype >= 0) { - peak.description += "-" + parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + peak.description += parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + } + } + addAdductToDescription(peak.description, parameters->metaladducts); + peak.description += ": "; + for (int k = 0; k <= i; k++) { + peak.description += "[" + bricksdatabase[intcomposition[k] - 1].getAcronymsAsString() + "]"; + if (k < i) { + peak.description += '-'; } + } - addAdductToDescription(peak.description, parameters->metaladducts); - peak.description += ": "; + } - for (int k = 0; k < (int)internalcomposition.size(); k++) { - peak.description += "[" + bricksdatabase[internalcomposition[k] - 1].getAcronymsAsString() + "]"; - if (k < (int)internalcomposition.size() - 1) { - peak.description += '-'; - } - } + if (j >= 0) { + peak.mzratio += fragmentlossmass[j]; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + mergeMaps(fragmentlossmap[j], tmpmap); } - generateChargedFragments(peak, tmpmap, peaklistrealsize, maxcharge, writedescription, disablesummary); + //peak.rotationid = -1; + //peak.seriesid = -1; + } + else { + //peak.rotationid = tmprotationid; + //peak.seriesid = tmpseriesid; } + generateChargedFragments(peak, tmpmap, peaklistrealsize, maxcharge, writedescription, disablesummary); + peak.mzratio = tmpmz; - peak.rotationid = tmprotationid; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + tmpmap = atoms; + } } + + //peak.rotationid = tmprotationid; + //peak.seriesid = tmpseriesid; + + } + + if (parameters->internalfragments) { + generateInternalFragments(bricksdatabase, peak, maxcharge, peaklistrealsize, intcomposition, i, atoms, currentlosses, fragmentiontype, peptidetype, trotation, writedescription, disablesummary); } } @@ -3697,7 +4734,19 @@ void cTheoreticalSpectrum::generateNTerminalFragmentIons(int maxcharge, int& pea void cTheoreticalSpectrum::generateCTerminalFragmentIons(int maxcharge, int& peaklistrealsize, vector& intcomposition, eFragmentIonType fragmentiontype, int neutrallosstype, cBricksDatabase& bricksdatabase, bool writedescription, int rotationid, vector& splittingsites, vector& searchedmodifications, ePeptideType peptidetype, bool regularblocksorder, TRotationInfo* trotation, eResidueLossType rightresiduelosstype, bool haslastblockartificial) { cPeak peak; map atoms; - atoms.clear(); + + vector currentlosses; + vector fragmentlossmass; + vector fragmentlosssummary; + vector< map > fragmentlossmap; + + double tmpmz; + map tmpmap; + + //int tmprotationid; + //int tmpseriesid; + + bool skipcommonfragments; bool disablesummary = false; if ((parameters->mode == denovoengine) && (parameters->blindedges == 2) && bricksdatabase[intcomposition[intcomposition.size() - 1] - 1].isArtificial()) { @@ -3784,6 +4833,8 @@ void cTheoreticalSpectrum::generateCTerminalFragmentIons(int maxcharge, int& pea disablesummary = true; } + updateListOfNeutralLosses(bricksdatabase, bricksdatabase[intcomposition[i] - 1], currentlosses, fragmentlossmass, fragmentlosssummary, fragmentlossmap, writedescription, disablesummary); + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { mergeMaps(bricksdatabase[intcomposition[i] - 1].getSummaryMap(), atoms); } @@ -3798,7 +4849,13 @@ void cTheoreticalSpectrum::generateCTerminalFragmentIons(int maxcharge, int& pea } if ((i > trotation->middlebranchstart) && (i <= trotation->middlebranchend)) { - continue; + if (parameters->internalfragments) { + // to do where applicable + continue; + } + else { + continue; + } } // redundant short c-term fragments are not generated @@ -3846,39 +4903,90 @@ void cTheoreticalSpectrum::generateCTerminalFragmentIons(int maxcharge, int& pea peak.seriesid = (int)intcomposition.size() - i - 1; - if (writedescription) { + // to do where applicable + skipcommonfragments = false; - peak.description = ""; - if ((peptidetype == cyclicpolyketide) /* || (peptidetype == cyclic) */ || (peptidetype == branched) || (peptidetype == branchcyclic)) { - peak.description += prefixstr; + if (!skipcommonfragments) { + + tmpmz = peak.mzratio; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + tmpmap = atoms; } - if ((peptidetype == linearpolyketide) || (peptidetype == cyclicpolyketide)) { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 2) + to_string((int)intcomposition.size() - i); - if (parameters->iondefinitions[fragmentiontype].name.size() > 2) { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(2, parameters->iondefinitions[fragmentiontype].name.length() - 2); + + //tmprotationid = peak.rotationid; + //tmpseriesid = peak.seriesid; + + for (int j = -1; j < (int)fragmentlossmass.size(); j++) { + + if (writedescription) { + + peak.description = ""; + if ((peptidetype == cyclicpolyketide) /* || (peptidetype == cyclic) */ || (peptidetype == branched) || (peptidetype == branchcyclic)) { + peak.description += prefixstr; + } + if ((peptidetype == linearpolyketide) || (peptidetype == cyclicpolyketide)) { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 2) + to_string((int)intcomposition.size() - i); + if (parameters->iondefinitions[fragmentiontype].name.size() > 2) { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(2, parameters->iondefinitions[fragmentiontype].name.length() - 2); + } + } + else { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 1) + to_string((int)intcomposition.size() - i); + if (parameters->iondefinitions[fragmentiontype].name.size() > 1) { + peak.description += parameters->iondefinitions[fragmentiontype].name.substr(1, parameters->iondefinitions[fragmentiontype].name.length() - 1); + } + } + if ((peak.neutrallosstype >= 0) || (j >= 0)) { + peak.description += " -"; + if (j >= 0) { + peak.description += fragmentlosssummary[j]; + } + if (peak.neutrallosstype >= 0) { + peak.description += parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; + } + } + addAdductToDescription(peak.description, parameters->metaladducts); + peak.description += ": "; + for (int k = (int)intcomposition.size() - 1; k >= i; k--) { + peak.description += "[" + bricksdatabase[intcomposition[k] - 1].getAcronymsAsString() + "]"; + if (k > i) { + peak.description += '-'; + } + } + } - } - else { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(0, 1) + to_string((int)intcomposition.size() - i); - if (parameters->iondefinitions[fragmentiontype].name.size() > 1) { - peak.description += parameters->iondefinitions[fragmentiontype].name.substr(1, parameters->iondefinitions[fragmentiontype].name.length() - 1); + + if (j >= 0) { + peak.mzratio += fragmentlossmass[j]; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + mergeMaps(fragmentlossmap[j], tmpmap); + } + + //peak.rotationid = -1; + //peak.seriesid = -1; } - } - if (peak.neutrallosstype >= 0) { - peak.description += "-" + parameters->neutrallossesdefinitions[peak.neutrallosstype].summary; - } - addAdductToDescription(peak.description, parameters->metaladducts); - peak.description += ": "; - for (int j = (int)intcomposition.size() - 1; j >= i; j--) { - peak.description += "[" + bricksdatabase[intcomposition[j] - 1].getAcronymsAsString() + "]"; - if (j > i) { - peak.description += '-'; + else { + //peak.rotationid = tmprotationid; + //peak.seriesid = tmpseriesid; + } + + generateChargedFragments(peak, tmpmap, peaklistrealsize, maxcharge, writedescription, disablesummary); + + peak.mzratio = tmpmz; + if (!disablesummary && (parameters->generateisotopepattern || writedescription)) { + tmpmap = atoms; } + } + //peak.rotationid = tmprotationid; + //peak.seriesid = tmpseriesid; + } - generateChargedFragments(peak, atoms, peaklistrealsize, maxcharge, writedescription, disablesummary); + if (parameters->internalfragments) { + // to do where applicable + } } @@ -4080,8 +5188,8 @@ void cTheoreticalSpectrum::setValidSequence(regex& searchedsequence) { } -vector& cTheoreticalSpectrum::getVisualCoverage() { - return visualcoverage; +vector& cTheoreticalSpectrum::getLabelsOfRotations() { + return rotationslabels; } @@ -4222,11 +5330,7 @@ void cTheoreticalSpectrum::store(ofstream& os) { os.write((char *)&valid, sizeof(bool)); os.write((char *)&sumofrelativeintensities, sizeof(double)); - size = (int)visualcoverage.size(); - os.write((char *)&size, sizeof(int)); - for (int i = 0; i < (int)visualcoverage.size(); i++) { - visualcoverage[i].store(os); - } + storeStringVector(rotationslabels, os); os.write((char *)&validposition, sizeof(int)); os.write((char *)&reversevalidposition, sizeof(int)); @@ -4308,11 +5412,7 @@ void cTheoreticalSpectrum::load(ifstream& is) { is.read((char *)&valid, sizeof(bool)); is.read((char *)&sumofrelativeintensities, sizeof(double)); - is.read((char *)&size, sizeof(int)); - visualcoverage.resize(size); - for (int i = 0; i < (int)visualcoverage.size(); i++) { - visualcoverage[i].load(is); - } + loadStringVector(rotationslabels, is); is.read((char *)&validposition, sizeof(int)); is.read((char *)&reversevalidposition, sizeof(int)); diff --git a/CycloBranch/core/cTheoreticalSpectrum.h b/CycloBranch/core/cTheoreticalSpectrum.h index 5a225fc..05e775b 100644 --- a/CycloBranch/core/cTheoreticalSpectrum.h +++ b/CycloBranch/core/cTheoreticalSpectrum.h @@ -59,9 +59,9 @@ struct splitSite { /** - \brief An auxiliary structure for visualisation of matched series of a cyclic peptide. + \brief An auxiliary structure for visualisation of matched series of fragment ions. */ -struct visualSeries { +struct matchedSeries { /** \brief A vector of matched peaks in a series. @@ -78,7 +78,7 @@ struct visualSeries { /** \brief The constructor. */ - visualSeries() { + matchedSeries() { series.clear(); name = ""; } @@ -119,7 +119,7 @@ class cTheoreticalSpectrum { string coveragebyseries; bool valid; double sumofrelativeintensities; - vector visualcoverage; + vector rotationslabels; int validposition; int reversevalidposition; int seriescompleted; @@ -134,9 +134,6 @@ class cTheoreticalSpectrum { // search for matches of experimental and theoretical peaks void searchForPeakPairs(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, double fragmentmasserrortolerance); - // search a m/z ratio in the experimental spectrum to decide whether its description should be generated - bool searchHint(double mzratio, cPeaksList& experimentalpeaks, double fragmentmasserrortolerance); - // compute additional scores void computeStatistics(bool writedescription); @@ -146,9 +143,18 @@ class cTheoreticalSpectrum { // generate precursor ion and its variants void generatePrecursorIon(vector& intcomposition, cBricksDatabase& bricksdatabasewithcombinations, int& theoreticalpeaksrealsize, bool writedescription); + // generate precursor ion and its variants for other type + void generatePrecursorIonForOther(int& theoreticalpeaksrealsize, bool writedescription); + // generate scrambled sequences void generateScrambledIons(cBricksDatabase& bricksdatabase, bool writedescription, int& theoreticalpeaksrealsize); + // update the list of losses + void updateListOfNeutralLosses(cBricksDatabase& bricksdatabase, cBrick& block, vector& currentlosses, vector& fragmentlossmass, vector& fragmentlosssummary, vector< map >& fragmentlossmap, bool writedescription, bool disablesummary); + + // generate internal fragments + void generateInternalFragments(cBricksDatabase& bricksdatabase, cPeak& peak, int maxcharge, int& peaklistrealsize, vector& intcomposition, int pos, map& atoms, vector& currentlosses, eFragmentIonType fragmentiontype, ePeptideType peptidetype, TRotationInfo* trotation, bool writedescription, bool disablesummary); + // select and normalize scrambled sequences void selectAndNormalizeScrambledSequences(unordered_set& scrambledsequences); @@ -171,13 +177,19 @@ class cTheoreticalSpectrum { void removeUnmatchedIsotopePatterns(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, cPeaksList& outputtheoreticalpeaks, bool storeunmatchedpeaks); // remove unmatched features - void removeUnmatchedFeatures(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, int id); - - // remove unmatched features - void removeUnmatchedFeaturesAndCompounds(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, int id); + int removeUnmatchedFeatures(bool lcms, cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, vector< vector >& hintsindex/*, int id*/); // remove unmatched compounds - void removeUnmatchedCompounds(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks); + int removeUnmatchedCompounds(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks, int minimumiontypes); + + // remove unmatched patterns in fine isotopic patterns + void removeUnmatchedPatternsFineSpectra(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks); + + // remove unmatched pattern by intensity ratio + void removeUnmatchedPatternsByIntensityRatio(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks); + + // remove unmatched pattern by m/z difference + void removeUnmatchedPatternsByMZDifference(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks); // calculate envelope scores void calculateEnvelopeScores(cPeaksList& theoreticalpeaks, int theoreticalpeaksrealsize, cPeaksList& experimentalpeaks); @@ -338,17 +350,40 @@ class cTheoreticalSpectrum { int compareCyclicPolyketide(cPeaksList& sortedpeaklist, cBricksDatabase& bricksdatabasewithcombinations, bool writedescription, regex& sequencetag, regex& searchedsequence, cPeaksList& unmatchedpeaksinmatchedpatterns, unordered_map* isotopeformuladesctoid); + /** + \brief Compare the theoretical spectrum of a metabolite with an experimental spectrum. + \param sortedpeaklist reference to an experimental peaklist + \param writedescription if true then string descriptions of peaks are filled + \param unmatchedpeaksinmatchedpatterns unmatched peaks in matched isotope patterns + \param isotopeformuladesctoid a map of isotope descriptions + \retval int number theoretical peaks generated + */ + int compareOther(cPeaksList& sortedpeaklist, bool writedescription, cPeaksList& unmatchedpeaksinmatchedpatterns, unordered_map* isotopeformuladesctoid); + + /** \brief Generate a simple mass spectrum. + \param terminatecomputation reference to a variable determining that the computation must be stopped \param writedescription if true then string descriptions of peaks are filled */ - void generateMSSpectrum(bool writedescription); + void generateMSSpectrum(bool& terminatecomputation, bool writedescription); /** \brief Generate a simple mass spectrum with fine isotopic patterns. + \param terminatecomputation reference to a variable determining that the computation must be stopped */ - void generateFineMSSpectrum(); + void generateFineMSSpectrum(bool& terminatecomputation); + + + /** + \brief Get a map of search hints to identify features in LC-MS data. + \param id identifier of an experimental spectrum + \param tsfull theoretical spectrum + \param unmatchedpeaksinmatchedpatterns unmatched peaks in matched isotope patterns + \param hintsindex index of experimental spectra for every matched theoretical peak + */ + void getHintsIndex(int id, cTheoreticalSpectrum& tsfull, cPeaksList& unmatchedpeaksinmatchedpatterns, vector< vector >& hintsindex); /** @@ -356,8 +391,9 @@ class cTheoreticalSpectrum { \param id identifier of an experimental spectrum \param tsfull theoretical spectrum with descriptions of peaks \param unmatchedpeaksinmatchedpatterns unmatched peaks in matched isotope patterns + \param hintsindex index of experimental spectra for every matched theoretical peak */ - void compareMSSpectrum(int id, cTheoreticalSpectrum& tsfull, cPeaksList& unmatchedpeaksinmatchedpatterns); + void compareMSSpectrum(int id, cTheoreticalSpectrum& tsfull, cPeaksList& unmatchedpeaksinmatchedpatterns, vector< vector >& hintsindex); /** @@ -554,10 +590,10 @@ class cTheoreticalSpectrum { /** - \brief Get a vector of fragment ion series for visualization. - \retval vector vector of fragment ion series for visualisation - */ - vector& getVisualCoverage(); + \brief Get the labels of cyclic rotations. + \retval vector a vector of labels + */ + vector& getLabelsOfRotations(); /** diff --git a/CycloBranch/core/cTheoreticalSpectrumList.cpp b/CycloBranch/core/cTheoreticalSpectrumList.cpp index e150c56..13ffe8b 100644 --- a/CycloBranch/core/cTheoreticalSpectrumList.cpp +++ b/CycloBranch/core/cTheoreticalSpectrumList.cpp @@ -116,48 +116,52 @@ int cTheoreticalSpectrumList::parallelCompareAndStore(cCandidateSet& candidates, int theoreticalpeaksrealsize = 0; currentworstscore = 0; - stmp = parameters->sequencetag; - fixRegularExpression(stmp); + if (parameters->peptidetype != other) { - /* - pos = (int)stmp.find("("); - if (pos != string::npos) { - stmp.replace(pos, 1, "\\("); - } - pos = (int)stmp.find(")"); - if (pos != string::npos) { - stmp.replace(pos, 1, "\\)"); - } - */ + stmp = parameters->sequencetag; + fixRegularExpression(stmp); - try { - rxsequencetag = stmp; - } - catch (regex_error& e) { - *os << endl << endl << "Error: Bad Regular Expression in Peptide Sequence Tag." << endl << e.what() << endl; - return -1; - } + /* + pos = (int)stmp.find("("); + if (pos != string::npos) { + stmp.replace(pos, 1, "\\("); + } + pos = (int)stmp.find(")"); + if (pos != string::npos) { + stmp.replace(pos, 1, "\\)"); + } + */ - stmp = parameters->searchedsequence; - fixRegularExpression(stmp); + try { + rxsequencetag = stmp; + } + catch (regex_error& e) { + *os << endl << endl << "Error: Bad Regular Expression in Peptide Sequence Tag." << endl << e.what() << endl; + return -1; + } - /* - pos = (int)stmp.find("("); - if (pos != string::npos) { - stmp.replace(pos, 1, "\\("); - } - pos = (int)stmp.find(")"); - if (pos != string::npos) { - stmp.replace(pos, 1, "\\)"); - } - */ + stmp = parameters->searchedsequence; + fixRegularExpression(stmp); + + /* + pos = (int)stmp.find("("); + if (pos != string::npos) { + stmp.replace(pos, 1, "\\("); + } + pos = (int)stmp.find(")"); + if (pos != string::npos) { + stmp.replace(pos, 1, "\\)"); + } + */ + + try { + rxsearchedsequence = stmp; + } + catch (regex_error& e) { + *os << endl << endl << "Error: Bad Regular Expression in the field 'Searched Sequence'." << endl << e.what() << endl; + return -1; + } - try { - rxsearchedsequence = stmp; - } - catch (regex_error& e) { - *os << endl << endl << "Error: Bad Regular Expression in the field 'Searched Sequence'." << endl << e.what() << endl; - return -1; } if ((parameters->mode == denovoengine) || (parameters->mode == databasesearch)) { @@ -289,6 +293,7 @@ int cTheoreticalSpectrumList::parallelCompareAndStore(cCandidateSet& candidates, theoreticalpeaksrealsize = tsp.compareCyclicPolyketide(tmppeaklist, *bricksdb, true, rxsequencetag, rxsearchedsequence, unmatchedpeaksinmatchedpatterns, &isotopeformuladesctoid); break; case other: + theoreticalpeaksrealsize = tsp.compareOther(tmppeaklist, true, unmatchedpeaksinmatchedpatterns, &isotopeformuladesctoid); break; default: break; @@ -336,9 +341,11 @@ int cTheoreticalSpectrumList::parallelCompareAndStore(cCandidateSet& candidates, string tmps; for (int i = 0; i < (int)theoreticalspectra.size(); i++) { theoreticalspectra[i].sortByMass(); - theoreticalspectra[i].getCandidate().setRealPeptideName(*bricksdb, parameters->peptidetype); - theoreticalspectra[i].getCandidate().setAcronymPeptideNameWithHTMLReferences(*bricksdb, parameters->peptidetype); - theoreticalspectra[i].getCandidate().setAcronyms(*bricksdb); + if (parameters->peptidetype != other) { + theoreticalspectra[i].getCandidate().setRealPeptideName(*bricksdb, parameters->peptidetype); + theoreticalspectra[i].getCandidate().setAcronymPeptideNameWithHTMLReferences(*bricksdb, parameters->peptidetype); + theoreticalspectra[i].getCandidate().setAcronyms(*bricksdb); + } if ((parameters->peptidetype == branched) || (parameters->peptidetype == branchcyclic)) { theoreticalspectra[i].getCandidate().setBackboneAcronyms(*bricksdb); theoreticalspectra[i].getCandidate().setBranchAcronyms(*bricksdb); diff --git a/CycloBranch/core/utilities.cpp b/CycloBranch/core/utilities.cpp index 7013a33..523efc3 100644 --- a/CycloBranch/core/utilities.cpp +++ b/CycloBranch/core/utilities.cpp @@ -4,7 +4,7 @@ QString appname = "CycloBranch"; -QString appversion = "v. 1.3.7 (64-bit)"; +QString appversion = "v. 2.0.0 (64-bit)"; #if OS_TYPE == UNX @@ -16,6 +16,44 @@ QString appversion = "v. 1.3.7 (64-bit)"; #endif +void storeIntVector(vector& v, ofstream& os) { + int size = (int)v.size(); + os.write((char *)&size, sizeof(int)); + for (int i = 0; i < (int)v.size(); i++) { + os.write((char *)&(v[i]), sizeof(int)); + } +} + + +void loadIntVector(vector& v, ifstream& is) { + int size; + is.read((char *)&size, sizeof(int)); + v.resize(size); + for (int i = 0; i < (int)v.size(); i++) { + is.read((char *)&(v[i]), sizeof(int)); + } +} + + +void storeDoubleVector(vector& v, ofstream& os) { + int size = (int)v.size(); + os.write((char *)&size, sizeof(int)); + for (int i = 0; i < (int)v.size(); i++) { + os.write((char *)&(v[i]), sizeof(double)); + } +} + + +void loadDoubleVector(vector& v, ifstream& is) { + int size; + is.read((char *)&size, sizeof(int)); + v.resize(size); + for (int i = 0; i < (int)v.size(); i++) { + is.read((char *)&(v[i]), sizeof(double)); + } +} + + void storeString(string& s, ofstream& os) { int size = (int)s.size(); os.write((char *)&size, sizeof(int)); @@ -78,6 +116,25 @@ void loadStringIntMap(map& map, ifstream& is) { } +void storeStringIntMapVector(vector< map >& vector, ofstream& os) { + int size = (int)vector.size(); + os.write((char *)&size, sizeof(int)); + for (int i = 0; i < (int)vector.size(); i++) { + storeStringIntMap(vector[i], os); + } +} + + +void loadStringIntMapVector(vector< map >& vector, ifstream& is) { + int size; + is.read((char *)&size, sizeof(int)); + vector.resize(size); + for (int i = 0; i < (int)vector.size(); i++) { + loadStringIntMap(vector[i], is); + } +} + + void storeIntStringMap(map& map, ofstream& os) { int size = (int)map.size(); os.write((char *)&size, sizeof(int)); @@ -113,6 +170,11 @@ void convertStringIntUnorderedMapToStringVector(unordered_map& map, } +bool isWhiteSpace(char c) { + return isspace(c); +} + + bool isWhiteSpaceExceptSpace(char c) { return isspace(c) && (c != ' '); } @@ -134,26 +196,25 @@ bool checkRegex(ePeptideType peptidetype, string& sequence, string& errormessage regex rx; // [^\\[\\]]+ is used instead of .+ to prevent from a too complex regex error - switch (peptidetype) - { - case linear: - case linearpolyketide: - rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; - break; - case cyclic: - case cyclicpolyketide: - rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+$"; - break; - case branched: - rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; - break; - case branchcyclic: - rx = "(^(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$|^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?$)"; - break; - case other: - default: - rx = ".*"; - break; + switch (peptidetype) { + case linear: + case linearpolyketide: + rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; + break; + case cyclic: + case cyclicpolyketide: + rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+$"; + break; + case branched: + rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; + break; + case branchcyclic: + rx = "(^(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$|^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?$)"; + break; + case other: + default: + rx = ".*"; + break; } try { @@ -171,6 +232,12 @@ bool checkRegex(ePeptideType peptidetype, string& sequence, string& errormessage } +bool checkFile(string filename) { + ifstream f(filename.c_str()); + return f.good(); +} + + void parseBranch(ePeptideType peptidetype, string& composition, vector& vectorcomposition, int& branchstart, int& branchend) { string s = composition; cBrick b; @@ -259,31 +326,23 @@ ePeptideType getPeptideTypeFromString(string& s) { string getStringFromPeptideType(ePeptideType peptidetype) { - switch (peptidetype) - { - case linear: - return "linear"; - break; - case cyclic: - return "cyclic"; - break; - case branched: - return "branched"; - break; - case branchcyclic: - return "branch-cyclic"; - break; - case linearpolyketide: - return "linear-polyketide"; - break; - case cyclicpolyketide: - return "cyclic-polyketide"; - break; - case other: - return "other"; - break; - default: - break; + switch (peptidetype) { + case linear: + return "linear"; + case cyclic: + return "cyclic"; + case branched: + return "branched"; + case branchcyclic: + return "branch-cyclic"; + case linearpolyketide: + return "linear-polyketide"; + case cyclicpolyketide: + return "cyclic-polyketide"; + case other: + return "other"; + default: + break; } return "other"; @@ -411,3 +470,112 @@ void stripIsomersFromStringVector(vector& acronyms) { } } + +bool proxyModelCheckInt(QAbstractItemModel* model, int index, int row, int column, QString str, const QModelIndex& parent) { + switch (index) { + case 0: + if (model->data(model->index(row, column, parent)).toInt() == str.toInt()) { + return true; + } + break; + case 1: + if (model->data(model->index(row, column, parent)).toInt() < str.toInt()) { + return true; + } + break; + case 2: + if (model->data(model->index(row, column, parent)).toInt() <= str.toInt()) { + return true; + } + break; + case 3: + if (model->data(model->index(row, column, parent)).toInt() > str.toInt()) { + return true; + } + break; + case 4: + if (model->data(model->index(row, column, parent)).toInt() >= str.toInt()) { + return true; + } + break; + default: + break; + } + return false; +} + + +bool proxyModelCheckDouble(QAbstractItemModel* model, int index, int row, int column, QString str, const QModelIndex& parent) { + switch (index) { + case 0: + if (model->data(model->index(row, column, parent)).toDouble() == str.toDouble()) { + return true; + } + break; + case 1: + if (model->data(model->index(row, column, parent)).toDouble() < str.toDouble()) { + return true; + } + break; + case 2: + if (model->data(model->index(row, column, parent)).toDouble() <= str.toDouble()) { + return true; + } + break; + case 3: + if (model->data(model->index(row, column, parent)).toDouble() > str.toDouble()) { + return true; + } + break; + case 4: + if (model->data(model->index(row, column, parent)).toDouble() >= str.toDouble()) { + return true; + } + break; + default: + break; + } + return false; +} + + +bool proxyModelCheckString(QAbstractItemModel* model, int index, int row, int column, QString& itemstr, QString str, const QModelIndex& parent, bool wholeword, Qt::CaseSensitivity casesensitive) { + string tmpstr = itemstr.toStdString(); + QString qstr = stripHTML(tmpstr).c_str(); + switch (index) { + case 0: + if (wholeword) { + if (qstr.compare(str, casesensitive) == 0) { + return true; + } + } + else { + return qstr.contains(str, casesensitive); + } + break; + case 1: + if (qstr.compare(str, casesensitive) < 0) { + return true; + } + break; + case 2: + if (qstr.compare(str, casesensitive) <= 0) { + return true; + } + break; + case 3: + if (qstr.compare(str, casesensitive) > 0) { + return true; + } + break; + case 4: + if (qstr.compare(str, casesensitive) >= 0) { + return true; + } + break; + default: + break; + } + return false; +} + diff --git a/CycloBranch/core/utilities.h b/CycloBranch/core/utilities.h index c1a8757..69c9139 100644 --- a/CycloBranch/core/utilities.h +++ b/CycloBranch/core/utilities.h @@ -10,6 +10,7 @@ #include #include #include +#include #include #include #include @@ -20,6 +21,8 @@ #include #include #include +#include +#include #include class cBrick; @@ -58,6 +61,18 @@ using namespace boost; const double pi = 3.141592653589793; +/** + \brief Default window size x. +*/ +const int defaultwinsizex = 1350; + + +/** + \brief Default window size y. +*/ +const int defaultwinsizey = 875; + + /** \brief Vendor types. */ @@ -75,7 +90,8 @@ enum eModeType { denovoengine = 0, singlecomparison = 1, databasesearch = 2, - dereplication = 3 + dereplication = 3, + compoundsearch = 4 }; @@ -111,6 +127,38 @@ extern QString appversion; extern QString installdir; +/** + \brief Store a vector of integers into an output stream. + \param v reference to a vector of integers + \param os reference to an output stream +*/ +void storeIntVector(vector& v, ofstream& os); + + +/** + \brief Load a vector of integers from an input stream. + \param v reference to a vector of integers + \param is reference to an input stream +*/ +void loadIntVector(vector& v, ifstream& is); + + +/** + \brief Store a vector of doubles into an output stream. + \param v reference to a vector of doubles + \param os reference to an output stream +*/ +void storeDoubleVector(vector& v, ofstream& os); + + +/** + \brief Load a vector of doubles from an input stream. + \param v reference to a vector of doubles + \param is reference to an input stream +*/ +void loadDoubleVector(vector& v, ifstream& is); + + /** \brief Store a string into an output stream. \param s reference to a string @@ -159,6 +207,22 @@ void storeStringIntMap(map& map, ofstream& os); void loadStringIntMap(map& map, ifstream& is); +/** + \brief Store a vector of map into an output stream. + \param vector reference to a vector + \param os reference to an output stream +*/ +void storeStringIntMapVector(vector< map >& vector, ofstream& os); + + +/** + \brief Load a vector of map from an input stream. + \param vector reference to a vector + \param is reference to an input stream +*/ +void loadStringIntMapVector(vector< map >& vector, ifstream& is); + + /** \brief Store a map into an output stream. \param map reference to a map @@ -183,6 +247,14 @@ void loadIntStringMap(map& map, ifstream& is); void convertStringIntUnorderedMapToStringVector(unordered_map& map, vector& vector); +/** + \brief Check if \a c is a white space. + \param c char + \retval bool true if \a c is a white space; false otherwise. +*/ +bool isWhiteSpace(char c); + + /** \brief Check if \a c is a white space (except normal space). \param c char @@ -209,6 +281,14 @@ string& removeWhiteSpacesExceptSpaces(string& s); bool checkRegex(ePeptideType peptidetype, string& sequence, string& errormessage); +/** + \brief Check if a file exists. + \param filename filename + \retval bool true if the file exists, false otherwise +*/ +bool checkFile(string filename); + + /** \brief Parse a position of a branch from a peptide sequence. \param peptidetype peptide type @@ -429,5 +509,73 @@ void stripIsomers(string& peptidesequence); void stripIsomersFromStringVector(vector& acronyms); +/** + \brief Compare items in a string vector by size. +*/ +struct compareStringBySize { + + /** + \brief Comparison function. + \param first first string + \param second second string + \retval bool true if the first string is shorter + */ + bool operator()(const std::string& first, const std::string& second) { + size_t size1 = first.size(); + size_t size2 = second.size(); + if (first.size() < second.size()) { + return true; + } + if (first.size() > second.size()) { + return false; + } + return first.compare(second) < 0; + } + +}; + + +/** + \brief Proxy model - int comparator. + \param model model + \param index index + \param row row + \param column column + \param str query string + \param parent parent + \retval bool true if the item is valid +*/ +bool proxyModelCheckInt(QAbstractItemModel* model, int index, int row, int column, QString str, const QModelIndex& parent); + + +/** + \brief Proxy model - double comparator. + \param model model + \param index index + \param row row + \param column column + \param str query string + \param parent parent + \retval bool true if the item is valid +*/ +bool proxyModelCheckDouble(QAbstractItemModel* model, int index, int row, int column, QString str, const QModelIndex& parent); + + +/** + \brief Proxy model - string comparator. + \param model model + \param index index + \param row row + \param column column + \param itemstr string of current item + \param str query string + \param parent parent + \param wholeword wholeword + \param casesensitive casesensitive + \retval bool true if the item is valid +*/ +bool proxyModelCheckString(QAbstractItemModel* model, int index, int row, int column, QString& itemstr, QString str, const QModelIndex& parent, bool wholeword, Qt::CaseSensitivity casesensitive); + + #endif diff --git a/CycloBranch/docs/cyclobranch_bba_bib.txt b/CycloBranch/docs/cyclobranch_bba_bib.txt index 639452f..b9815d3 100644 --- a/CycloBranch/docs/cyclobranch_bba_bib.txt +++ b/CycloBranch/docs/cyclobranch_bba_bib.txt @@ -6,5 +6,5 @@ volume={1865}, number={7}, year={2017}, pages={768--775}, -doi={10.1016/j.bbapap.2016.12.003.} +doi={10.1016/j.bbapap.2016.12.003} } diff --git a/CycloBranch/docs/cyclobranch_jms_bib.txt b/CycloBranch/docs/cyclobranch_jms_bib.txt new file mode 100644 index 0000000..a4cd115 --- /dev/null +++ b/CycloBranch/docs/cyclobranch_jms_bib.txt @@ -0,0 +1,10 @@ +@ARTICLE{CycloBranch-JMS-2018, +author={Novak, Jiri and Skriba, Anton and Zapal, Jakub and Kuzma, Marek and Havlicek, Vladimir}, +title={CycloBranch: An open tool for fine isotope structures in conventional and product ion mass spectra}, +journal={J. Mass Spectrom.}, +volume={53}, +number={11}, +year={2018}, +pages={1097--1103}, +doi={10.1002/jms.4285} +} diff --git a/CycloBranch/docs/cyclobranch_jms_ris.txt b/CycloBranch/docs/cyclobranch_jms_ris.txt new file mode 100644 index 0000000..67cf1ea --- /dev/null +++ b/CycloBranch/docs/cyclobranch_jms_ris.txt @@ -0,0 +1,16 @@ +TY - JOUR +TI - CycloBranch: An open tool for fine isotope structures in conventional and product ion mass spectra +T2 - J. Mass Spectrom. +VL - 53 +IS - 11 +SP - 1097-1103 +PY - 2018 +AU - Novak,Jiri +AU - Skriba,Anton +AU - Zapal,Jakub +AU - Kuzma,Marek +AU - Havlicek,Vladimir +N1 - +DB - +DO - 10.1002/jms.4285 +ER - diff --git a/CycloBranch/gui/cAboutWidget.cpp b/CycloBranch/gui/cAboutWidget.cpp index 80dd06e..79bb351 100644 --- a/CycloBranch/gui/cAboutWidget.cpp +++ b/CycloBranch/gui/cAboutWidget.cpp @@ -16,33 +16,33 @@ cAboutWidget::cAboutWidget(QWidget* parent) { layout = new QVBoxLayout(); - QString homepage = "http://ms.biomed.cas.cz/cyclobranch/
http://github.com/novak-jiri/cyclobranch/

"; + QString homepage = "https://ms.biomed.cas.cz/cyclobranch/
https://github.com/novak-jiri/cyclobranch/

"; QString citations = "Any work based on CycloBranch shall cite any of the following references:

"; citations += "Jiri Novak, Karel Lemr, Kevin A. Schug, Vladimir Havlicek:
"; citations += "CycloBranch: De Novo Sequencing of Nonribosomal Peptides from Accurate Product Ion Mass Spectra,
"; citations += "J. Am. Soc. Mass Spectrom., vol. 26, no. 10, pp. 1780-1786, 2015. DOI: 10.1007/s13361-015-1211-1.
"; - citations += "Download citation: [ ris ], [ bib ]

"; + citations += "Download citation: [ ris ], [ bib ]

"; citations += "Jiri Novak, Lucie Sokolova, Karel Lemr, Tomas Pluhacek, Andrea Palyzova, Vladimir Havlicek:
"; citations += "Batch-processing of Imaging or Liquid-chromatography Mass Spectrometry Datasets and De Novo Sequencing of Polyketide Siderophores,
"; citations += "BBA - Proteins Proteom., vol. 1865, no. 7, pp. 768-775, 2017. DOI: 10.1016/j.bbapap.2016.12.003.
"; - citations += "Download citation: [ ris ], [ bib ]

"; + citations += "Download citation: [ ris ], [ bib ]

"; citations += "Jiri Novak, Anton Skriba, Jakub Zapal, Marek Kuzma, Vladimir Havlicek:
"; citations += "CycloBranch: an Open Tool for Fine Isotope Structures in Conventional and Product Ion Mass Spectra,
"; citations += "J. Mass Spectrom., vol. 53, no. 11, pp. 1097-1103, 2018. DOI: 10.1002/jms.4285.
"; - citations += "Download citation: [ ris ], [ bib ]


"; + citations += "Download citation: [ ris ], [ bib ]


"; QString licence = "Licence:

This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

"; licence += "This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.

"; - licence += "You should have received a copy of the GNU General Public License along with this program. If not, see http://www.gnu.org/licenses/.


"; + licence += "You should have received a copy of the GNU General Public License along with this program. If not, see https://www.gnu.org/licenses/.


"; - QString developers = "Developers:

Jiri Novak
Laboratory of Molecular Structure Characterization
Institute of Microbiology
Czech Academy of Sciences
Videnska 1083
142 20 Prague
Czech Republic
jiri.novak@biomed.cas.cz

(C) 2013 - 2018


"; + QString developers = "Developers:

Jiri Novak
Laboratory of Molecular Structure Characterization
Institute of Microbiology
Czech Academy of Sciences
Videnska 1083
142 20 Prague
Czech Republic
jiri.novak@biomed.cas.cz

(C) 2013 - 2019


"; QString splash = "



"; - QString acknowledgement = "Acknowledgements:

Thanks to Aha-soft and Icons8 for icons.


"; + QString acknowledgement = "Acknowledgements:

This application uses Qt library under LGPLv3 license. Thanks to Aha-soft and Icons8 for icons.


"; message = new QTextBrowser(); message->setReadOnly(true); diff --git a/CycloBranch/gui/cBranchCyclicWidget.cpp b/CycloBranch/gui/cBranchCyclicWidget.cpp index 43efad1..19fe19a 100644 --- a/CycloBranch/gui/cBranchCyclicWidget.cpp +++ b/CycloBranch/gui/cBranchCyclicWidget.cpp @@ -10,53 +10,62 @@ void generateBranchLabelsDown(bool nterminal, int rotationid, unordered_set& labels, cParameters* parameters, cTheoreticalSpectrum* theoreticalspectrum, int centerx, int topmargin, int horizontalstep, int verticalstep, string visibleionseries, string visibleneutralloss, int visiblerotationid, int branchstart) { - string name; - int k; - int coverageindex = rotationid * (int)parameters->ionsfortheoreticalspectra.size() * (parameters->numberofgeneratedneutrallosses + 1); - bool skipiontype, skipneutralloss; - if ((visiblerotationid == -1) || (visiblerotationid == rotationid/6)) { + cPeaksList* thpeaks = theoreticalspectrum->getTheoreticalPeaks(); + string description; + size_t pos; + int rotid, serid; + for (int i = 0; i < thpeaks->size(); i++) { - for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { + if (((*thpeaks)[i].matched > 0) && ((*thpeaks)[i].rotationid == rotationid)) { - skipiontype = false; - if ((visibleionseries.compare("") != 0) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.compare(visibleionseries) != 0)) { - skipiontype = true; - } - - for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { + description = (*thpeaks)[i].description; + description = description.substr(0, description.find(':')); - skipneutralloss = false; - if (visibleneutralloss.compare("all") != 0) { - if ((j == -1) && (visibleneutralloss.compare("none") != 0)) { - skipneutralloss = true; + if (description.find('[') == string::npos) { + if (parameters->precursorcharge > 0) { + pos = description.find("+ "); + if (pos != string::npos) { + description = description.substr(pos + 2); + } + else { + continue; + } + } + else { + pos = description.find("- "); + if (pos != string::npos) { + description = description.substr(pos + 2); } - if ((j >= 0) && (parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary.compare(visibleneutralloss) != 0)) { - skipneutralloss = true; + else { + continue; } } - if (!skipiontype && !skipneutralloss) { + if (visibleionseries.empty() || (!visibleionseries.empty() && (parameters->iondefinitions[(*thpeaks)[i].iontype].name.compare(visibleionseries) == 0))) { + + if ((visibleneutralloss.compare("all") == 0) + || ((visibleneutralloss.compare("none") == 0) && (description.find(" -") == string::npos)) + || ((visibleneutralloss.compare("all") != 0) && (visibleneutralloss.compare("none") != 0) && (description.substr(description.find(" -") + 2).compare(visibleneutralloss) == 0))) { + + rotid = (*thpeaks)[i].rotationid; + if ((rotid >= 0) && ((visiblerotationid == -1) || (visiblerotationid == rotid / 6))) { + + if ((nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].nterminal) || (!nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].cterminal)) { - if ((nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].nterminal) || (!nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].cterminal)) { - k = 0; - while (k < branchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[k] > 0) { - name = theoreticalspectrum->getVisualCoverage()[coverageindex].name.substr(0, theoreticalspectrum->getVisualCoverage()[coverageindex].name.rfind('_') + 1); - name += parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name[0] + to_string(k + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(1); - if (j >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; + serid = (*thpeaks)[i].seriesid; + if ((serid >= 0) && (serid < branchstart)) { + insertLabel(labels, centerx + 40, topmargin + verticalstep * serid + verticalstep / 2 - verticalstep / 8, description, false); } - insertLabel(labels, centerx + 40, topmargin + verticalstep * k + verticalstep / 2 - verticalstep / 8, name, false); + } - k++; + } + } } - coverageindex++; - } } @@ -66,56 +75,63 @@ void generateBranchLabelsDown(bool nterminal, int rotationid, unordered_set& labels, cParameters* parameters, cTheoreticalSpectrum* theoreticalspectrum, int centerx, int topmargin, int horizontalstep, int verticalstep, string visibleionseries, string visibleneutralloss, int visiblerotationid, int branchend) { - string name; - int k; - int count; - int coverageindex = rotationid * (int)parameters->ionsfortheoreticalspectra.size() * (parameters->numberofgeneratedneutrallosses + 1); - bool skipiontype, skipneutralloss; +void generateBranchLabelsUp(bool nterminal, int rotationid, unordered_set& labels, cParameters* parameters, cTheoreticalSpectrum* theoreticalspectrum, int centerx, int topmargin, int horizontalstep, int verticalstep, string visibleionseries, string visibleneutralloss, int visiblerotationid, int branchend, int fragmentend) { - if ((visiblerotationid == -1) || (visiblerotationid == rotationid / 6)) { + cPeaksList* thpeaks = theoreticalspectrum->getTheoreticalPeaks(); + string description; + size_t pos; + int rotid, serid; + for (int i = 0; i < thpeaks->size(); i++) { - for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { + if (((*thpeaks)[i].matched > 0) && ((*thpeaks)[i].rotationid == rotationid)) { - skipiontype = false; - if ((visibleionseries.compare("") != 0) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.compare(visibleionseries) != 0)) { - skipiontype = true; - } - - for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { + description = (*thpeaks)[i].description; + description = description.substr(0, description.find(':')); - skipneutralloss = false; - if (visibleneutralloss.compare("all") != 0) { - if ((j == -1) && (visibleneutralloss.compare("none") != 0)) { - skipneutralloss = true; + if (description.find('[') == string::npos) { + if (parameters->precursorcharge > 0) { + pos = description.find("+ "); + if (pos != string::npos) { + description = description.substr(pos + 2); + } + else { + continue; + } + } + else { + pos = description.find("- "); + if (pos != string::npos) { + description = description.substr(pos + 2); } - if ((j >= 0) && (parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary.compare(visibleneutralloss) != 0)) { - skipneutralloss = true; + else { + continue; } } - if (!skipiontype && !skipneutralloss) { - - if ((nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].nterminal) || (!nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].cterminal)) { - k = 0; - count = (int)theoreticalspectrum->getVisualCoverage()[coverageindex].series.size() - branchend; - while (k < count) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[k + branchend] > 0) { - name = theoreticalspectrum->getVisualCoverage()[coverageindex].name.substr(0, theoreticalspectrum->getVisualCoverage()[coverageindex].name.rfind('_') + 1); - name += parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name[0] + to_string(k + branchend + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(1); - if (j >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; + if (visibleionseries.empty() || (!visibleionseries.empty() && (parameters->iondefinitions[(*thpeaks)[i].iontype].name.compare(visibleionseries) == 0))) { + + if ((visibleneutralloss.compare("all") == 0) + || ((visibleneutralloss.compare("none") == 0) && (description.find(" -") == string::npos)) + || ((visibleneutralloss.compare("all") != 0) && (visibleneutralloss.compare("none") != 0) && (description.substr(description.find(" -") + 2).compare(visibleneutralloss) == 0))) { + + rotid = (*thpeaks)[i].rotationid; + if ((rotid >= 0) && ((visiblerotationid == -1) || (visiblerotationid == rotid / 6))) { + + if ((nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].nterminal) || (!nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].cterminal)) { + + serid = (*thpeaks)[i].seriesid; + if ((serid >= 0) && (serid >= branchend) && (serid < fragmentend)) { + insertLabel(labels, centerx - 40, topmargin + verticalstep * (fragmentend - serid - 1) + verticalstep / 2, description, true); } - insertLabel(labels, centerx - 40, topmargin + verticalstep * (count - k - 1) + verticalstep / 2, name, true); + } - k++; + } + } } - coverageindex++; - } } @@ -284,7 +300,7 @@ void cBranchCyclicWidget::paint(QPainter& painter) { int linesize = 20; int cornerlinesize = horizontalstep/8; - paintCircle(painter, backboneacronyms, centerx, centery, radius, angle, horizontalstep, linesize, cornerlinesize, theoreticalspectrum->getVisualCoverage().size() > 0, visiblerotationid, labels); + paintCircle(painter, backboneacronyms, centerx, centery, radius, angle, horizontalstep, linesize, cornerlinesize, theoreticalspectrum->getTheoreticalPeaks()->size() > 0, visiblerotationid, labels); // paint the branch @@ -297,7 +313,7 @@ void cBranchCyclicWidget::paint(QPainter& painter) { painter.drawText(centerx - horizontalstep/3, topmargin + verticalstep*i, horizontalstep*2/3, 20, Qt::AlignCenter, branchacronyms[branchsize - i - 1].c_str()); } - if (theoreticalspectrum->getVisualCoverage().size() > 0) { + if (theoreticalspectrum->getTheoreticalPeaks()->size() > 0) { painter.drawText(centerx - horizontalstep/3, topmargin + verticalstep*i - 20, horizontalstep*2/3, 20, Qt::AlignLeft, to_string(backbonesize + branchsize - i).c_str()); } @@ -307,7 +323,7 @@ void cBranchCyclicWidget::paint(QPainter& painter) { painter.setPen(QPen(Qt::black, 2, Qt::SolidLine)); painter.drawLine(centerx, topmargin + verticalstep*i + 20, centerx, topmargin + verticalstep*i + verticalstep); - if (theoreticalspectrum->getVisualCoverage().size() > 0) { + if (theoreticalspectrum->getTheoreticalPeaks()->size() > 0) { painter.setPen(QPen(Qt::black, 2, Qt::DashLine)); painter.drawLine(centerx - 20, topmargin + verticalstep*i + (verticalstep + 10)/2, centerx + 20, topmargin + verticalstep*i + (verticalstep + 10)/2); painter.drawLine(centerx - 20, topmargin + verticalstep*i + (verticalstep + 10)/2, centerx - 20, topmargin + verticalstep*i + (verticalstep + 10)/2 + verticalstep/8); @@ -321,7 +337,7 @@ void cBranchCyclicWidget::paint(QPainter& painter) { } - if (parameters && !hidelabels && (theoreticalspectrum->getVisualCoverage().size() > 0)) { + if (parameters && !hidelabels && (theoreticalspectrum->getTheoreticalPeaks()->size() > 0)) { // get branch-cyclic rotations vector branchcyclicrotations; @@ -335,13 +351,13 @@ void cBranchCyclicWidget::paint(QPainter& painter) { } int rotationid; - int half = (int)theoreticalspectrum->getVisualCoverage().size() / (int)parameters->ionsfortheoreticalspectra.size() / (parameters->numberofgeneratedneutrallosses + 1) / 2; + int half = backbonesize * 6; for (int i = 0; i < half; i++) { - + if ((visibletrotationid != -1) && (visibletrotationid != i % 6)) { continue; } - + if (i/6 == 0) { rotationid = half/6; } @@ -349,36 +365,35 @@ void cBranchCyclicWidget::paint(QPainter& painter) { rotationid = 2*half/6 - i/6; } - switch (i % 6) - { - case 0: - generateCyclicLabelsToRight(true, i, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][0].middlebranchstart, trotationsofbranchcyclicrotations[i/6][0].middlebranchend); - break; - case 1: - generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); - generateCyclicLabelsToRight(true, i, -1, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); - break; - case 2: - generateCyclicLabelsToRight(true, rotationid*6 + 2, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][2].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][2].middlebranchend); - break; - case 3: - generateCyclicLabelsToRight(true, i, i/6, 0, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, trotationsofbranchcyclicrotations[i/6][3].middlebranchend); - generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchend); - generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); - generateCyclicLabelsToLeft(false, i, 0, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); - break; - case 4: - generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); - generateCyclicLabelsToLeft(true, i, 0, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); - break; - case 5: - generateCyclicLabelsToRight(true, rotationid*6 + 5, i/6, 0, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][5].middlebranchend); - generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][5].middlebranchend); - generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); - generateCyclicLabelsToRight(false, i, -1, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); - break; - default: - break; + switch (i % 6) { + case 0: + generateCyclicLabelsToRight(true, i, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][0].middlebranchstart, trotationsofbranchcyclicrotations[i/6][0].middlebranchend); + break; + case 1: + generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); + generateCyclicLabelsToRight(true, i, -1, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); + break; + case 2: + generateCyclicLabelsToRight(true, rotationid*6 + 2, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][2].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][2].middlebranchend); + break; + case 3: + generateCyclicLabelsToRight(true, i, i/6, 0, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, trotationsofbranchcyclicrotations[i/6][3].middlebranchend); + generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchend, backbonesize + branchsize - 1); + generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); + generateCyclicLabelsToLeft(false, i, 0, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); + break; + case 4: + generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); + generateCyclicLabelsToLeft(true, i, 0, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); + break; + case 5: + generateCyclicLabelsToRight(true, rotationid*6 + 5, i/6, 0, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][5].middlebranchend); + generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][5].middlebranchend, backbonesize + branchsize - 1); + generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); + generateCyclicLabelsToRight(false, i, -1, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); + break; + default: + break; } } @@ -396,49 +411,40 @@ void cBranchCyclicWidget::paint(QPainter& painter) { rotationid = 2*half/6 - i/6; } - switch (i % 6) - { - case 0: - generateCyclicLabelsToLeft(true, i, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][0].middlebranchstart, trotationsofbranchcyclicrotations[i/6][0].middlebranchend); - break; - case 1: - generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); - generateCyclicLabelsToLeft(true, i, 0, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); - break; - case 2: - generateCyclicLabelsToLeft(true, rotationid*6 + 2, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][2].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][2].middlebranchend); - break; - case 3: - generateCyclicLabelsToLeft(true, i, i/6, 0, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, trotationsofbranchcyclicrotations[i/6][3].middlebranchend); - generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchend); - generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); - generateCyclicLabelsToRight(false, i, -1, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); - break; - case 4: - generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); - generateCyclicLabelsToRight(true, i, -1, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); - break; - case 5: - generateCyclicLabelsToLeft(true, rotationid*6 + 5, i/6, 0, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][5].middlebranchend); - generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][5].middlebranchend); - generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); - generateCyclicLabelsToLeft(false, i, 0, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); - break; - default: - break; + switch (i % 6) { + case 0: + generateCyclicLabelsToLeft(true, i, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][0].middlebranchstart, trotationsofbranchcyclicrotations[i/6][0].middlebranchend); + break; + case 1: + generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); + generateCyclicLabelsToLeft(true, i, 0, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); + break; + case 2: + generateCyclicLabelsToLeft(true, rotationid*6 + 2, i/6, 0, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][2].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][2].middlebranchend); + break; + case 3: + generateCyclicLabelsToLeft(true, i, i/6, 0, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchstart, trotationsofbranchcyclicrotations[i/6][3].middlebranchend); + generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][3].middlebranchend, backbonesize + branchsize - 1); + generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); + generateCyclicLabelsToRight(false, i, -1, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); + break; + case 4: + generateBranchLabelsDown(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart); + generateCyclicLabelsToRight(true, i, -1, trotationsofbranchcyclicrotations[i/6][4].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][4].middlebranchstart, trotationsofbranchcyclicrotations[i/6][4].middlebranchend); + break; + case 5: + generateCyclicLabelsToLeft(true, rotationid*6 + 5, i/6, 0, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[rotationid][5].middlebranchstart, trotationsofbranchcyclicrotations[rotationid][5].middlebranchend); + generateBranchLabelsUp(true, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][5].middlebranchend, backbonesize + branchsize - 1); + generateBranchLabelsDown(false, i, labels, parameters, theoreticalspectrum, centerx, topmargin, horizontalstep, verticalstep, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart); + generateCyclicLabelsToLeft(false, i, 0, trotationsofbranchcyclicrotations[i/6][1].middlebranchend, backbonesize + branchsize - 1, backbonesize, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, trotationsofbranchcyclicrotations[i/6][1].middlebranchstart, trotationsofbranchcyclicrotations[i/6][1].middlebranchend); + break; + default: + break; } } - painter.setPen(QPen(Qt::red, 2, Qt::SolidLine)); - for (auto it = labels.begin(); it != labels.end(); ++it) { - if (it->alignright) { - painter.drawText(it->x - fm.width(it->label.c_str()), it->y, fm.width(it->label.c_str()), 20, Qt::AlignLeft, it->label.c_str()); - } - else { - painter.drawText(it->x, it->y, width(), 20, Qt::AlignLeft, it->label.c_str()); - } - } + drawLabels(painter, labels, width()); } diff --git a/CycloBranch/gui/cBranchCyclicWidget.h b/CycloBranch/gui/cBranchCyclicWidget.h index 605d6a7..c4d3d04 100644 --- a/CycloBranch/gui/cBranchCyclicWidget.h +++ b/CycloBranch/gui/cBranchCyclicWidget.h @@ -54,8 +54,9 @@ void generateBranchLabelsDown(bool nterminal, int rotationid, unordered_set& labels, cParameters* parameters, cTheoreticalSpectrum* theoreticalspectrum, int centerx, int topmargin, int horizontalstep, int verticalstep, string visibleionseries, string visibleneutralloss, int visiblerotationid, int branchend); +void generateBranchLabelsUp(bool nterminal, int rotationid, unordered_set& labels, cParameters* parameters, cTheoreticalSpectrum* theoreticalspectrum, int centerx, int topmargin, int horizontalstep, int verticalstep, string visibleionseries, string visibleneutralloss, int visiblerotationid, int branchend, int fragmentend); /** diff --git a/CycloBranch/gui/cBranchedWidget.cpp b/CycloBranch/gui/cBranchedWidget.cpp index 443bbae..d88701d 100644 --- a/CycloBranch/gui/cBranchedWidget.cpp +++ b/CycloBranch/gui/cBranchedWidget.cpp @@ -170,7 +170,7 @@ void cBranchedWidget::paint(QPainter& painter) { if (i < backbonesize - 1) { painter.setPen(QPen(Qt::black, 2, Qt::SolidLine)); painter.drawLine(leftmargin + horizontalstep/4 + horizontalstep*i + horizontalstep/2, topmargin + verticalstep*branchsize + 11, leftmargin + horizontalstep/4 + horizontalstep*(i + 1), topmargin + verticalstep*branchsize + 11); - if (theoreticalspectrum->getVisualCoverage().size() > 0) { + if (theoreticalspectrum->getTheoreticalPeaks()->size() > 0) { painter.setPen(QPen(Qt::black, 2, Qt::DashLine)); painter.drawLine(leftmargin + horizontalstep*(i + 1), topmargin + verticalstep*branchsize - 10, leftmargin + horizontalstep*(i + 1), topmargin + verticalstep*branchsize + 30); painter.drawLine(leftmargin + horizontalstep/4 + horizontalstep/8 + horizontalstep*i + horizontalstep/2, topmargin + verticalstep*branchsize - 10, leftmargin + horizontalstep*(i + 1), topmargin + verticalstep*branchsize - 10); @@ -193,7 +193,7 @@ void cBranchedWidget::paint(QPainter& painter) { painter.setPen(QPen(Qt::black, 2, Qt::SolidLine)); painter.drawLine(leftmargin + horizontalstep/2 + horizontalstep*tpermutations[0].middlebranchstart, topmargin + verticalstep*i + 20, leftmargin + horizontalstep/2 + horizontalstep*tpermutations[0].middlebranchstart, topmargin + verticalstep*i + verticalstep); - if (theoreticalspectrum->getVisualCoverage().size() > 0) { + if (theoreticalspectrum->getTheoreticalPeaks()->size() > 0) { painter.setPen(QPen(Qt::black, 2, Qt::DashLine)); painter.drawLine(leftmargin + horizontalstep/2 + horizontalstep*tpermutations[0].middlebranchstart - 20, topmargin + verticalstep*i + (verticalstep + 10)/2, leftmargin + horizontalstep/2 + horizontalstep*tpermutations[0].middlebranchstart + 20, topmargin + verticalstep*i + (verticalstep + 10)/2); painter.drawLine(leftmargin + horizontalstep/2 + horizontalstep*tpermutations[0].middlebranchstart - 20, topmargin + verticalstep*i + (verticalstep + 10)/2, leftmargin + horizontalstep/2 + horizontalstep*tpermutations[0].middlebranchstart - 20, topmargin + verticalstep*i + (verticalstep + 10)/2 + verticalstep/8); @@ -201,303 +201,180 @@ void cBranchedWidget::paint(QPainter& painter) { } } - if (parameters && !hidelabels && (theoreticalspectrum->getVisualCoverage().size() > 0)) { + if (parameters && !hidelabels && theoreticalspectrum->getTheoreticalPeaks()) { unordered_set labels; labels.clear(); - int position; - string name; - int len = (int)theoreticalspectrum->getVisualCoverage()[0].series.size(); - int coverageindex; - bool skipiontype, skipneutralloss; + cPeaksList* thpeaks = theoreticalspectrum->getTheoreticalPeaks(); + string description; + size_t pos; + int rotid, serid; + for (int i = 0; i < thpeaks->size(); i++) { - for (int i = 0; i < 6; i++) { + if ((*thpeaks)[i].matched > 0) { - if ((visibletrotationid != -1) && (visibletrotationid != i)) { - continue; - } - - coverageindex = i * (int)parameters->ionsfortheoreticalspectra.size() * (parameters->numberofgeneratedneutrallosses + 1); + description = (*thpeaks)[i].description; + description = description.substr(0, description.find(':')); - for (int j = 0; j < (int)parameters->ionsfortheoreticalspectra.size(); j++) { - - skipiontype = false; - if ((visibleionseries.compare("") != 0) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.compare(visibleionseries) != 0)) { - skipiontype = true; - } - - for (int k = -1; k < (int)parameters->neutrallossesfortheoreticalspectra.size(); k++) { - - skipneutralloss = false; - if (visibleneutralloss.compare("all") != 0) { - if ((k == -1) && (visibleneutralloss.compare("none") != 0)) { - skipneutralloss = true; + if (description.find('[') == string::npos) { + if (parameters->precursorcharge > 0) { + pos = description.find("+ "); + if (pos != string::npos) { + description = description.substr(pos + 2); } - if ((k >= 0) && (parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary.compare(visibleneutralloss) != 0)) { - skipneutralloss = true; + else { + continue; } } - - if (!skipiontype && !skipneutralloss) { - - position = 0; - if (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].nterminal) { - for (int m = 0; m < len; m++) { - switch (i) - { - case 0: - if ((m < tpermutations[i].middlebranchstart) || (m >= tpermutations[i].middlebranchend)) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * position + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, name, false); - } - position++; - } - break; - case 1: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * m + verticalstep / 2 - verticalstep / 8, name, false); - } - } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * (position + tpermutations[i].middlebranchend - tpermutations[i].middlebranchstart) + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, name, false); - } - position++; - } - break; - case 2: - if ((m < tpermutations[i].middlebranchstart) || (m >= tpermutations[i].middlebranchend)) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * (backbonesize - position - 2 + 1), topmargin + verticalstep * branchsize + 35, name, false); - } - position++; - } - break; - case 3: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * position + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, name, false); - } - position++; - } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * (branchsize - m - 2 + backbonesize) + verticalstep / 2, name, true); - } - } - break; - case 4: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * m + verticalstep / 2 - verticalstep / 8, name, false); - } - } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * (backbonesize - tpermutations[i].middlebranchend + tpermutations[i].middlebranchstart - position - 2 + 1), topmargin + verticalstep * branchsize + 35, name, false); - } - position++; - } - break; - case 5: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * (backbonesize - position - 2 + 1), topmargin + verticalstep * branchsize + 35, name, false); - } - position++; - } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[m] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(m + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * (branchsize - m - 2 + backbonesize) + verticalstep / 2, name, true); - } - } - break; - default: - break; - } - } + else { + pos = description.find("- "); + if (pos != string::npos) { + description = description.substr(pos + 2); } + else { + continue; + } + } - position = 0; - if (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].cterminal) { - for (int m = len - 1; m >= 0; m--) { - switch (i) - { - case 0: - if ((m < tpermutations[i].middlebranchstart) || (m >= tpermutations[i].middlebranchend)) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * (backbonesize - position - 1), topmargin + verticalstep * branchsize + 35, name, false); - } - position++; - } - break; - case 1: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * m + verticalstep / 2, name, true); - } - } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * (backbonesize - position - 1), topmargin + verticalstep * branchsize + 35, name, false); - } - position++; - } - break; - case 2: - if ((m < tpermutations[i].middlebranchstart) || (m >= tpermutations[i].middlebranchend)) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * position + horizontalstep / 2 + horizontalstep / 4 + horizontalstep / 8, topmargin + verticalstep * branchsize - 35, name, false); - } - position++; - } - break; - case 3: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * (backbonesize - position - tpermutations[i].middlebranchend + tpermutations[i].middlebranchstart - 1), topmargin + verticalstep * branchsize + 35, name, false); - } - position++; - } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * (branchsize - m - 2 + backbonesize) + verticalstep / 2 - verticalstep / 8, name, false); - } - } - break; - case 4: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * m + verticalstep / 2, name, true); + if (visibleionseries.empty() || (!visibleionseries.empty() && (parameters->iondefinitions[(*thpeaks)[i].iontype].name.compare(visibleionseries) == 0))) { + + if ((visibleneutralloss.compare("all") == 0) + || ((visibleneutralloss.compare("none") == 0) && (description.find(" -") == string::npos)) + || ((visibleneutralloss.compare("all") != 0) && (visibleneutralloss.compare("none") != 0) && (description.substr(description.find(" -") + 2).compare(visibleneutralloss) == 0))) { + + rotid = (*thpeaks)[i].rotationid; + if ((rotid >= 0) && ((visibletrotationid == -1) || (visibletrotationid == rotid))) { + + serid = (*thpeaks)[i].seriesid; + if (serid >= 0) { + + if (parameters->iondefinitions[(*thpeaks)[i].iontype].nterminal) { + switch (rotid) { + case 0: + if (serid < tpermutations[0].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * serid + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, description, false); + } + if (serid >= tpermutations[0].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * (serid - branchsize) + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, description, false); + } + break; + case 1: + if (serid < tpermutations[1].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * serid + verticalstep / 2 - verticalstep / 8, description, false); + } + if (serid >= tpermutations[1].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * (serid - branchsize) + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, description, false); + } + break; + case 2: + if (serid < tpermutations[2].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + if (serid >= tpermutations[2].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid + branchsize - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + break; + case 3: + if (serid < tpermutations[3].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * serid + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, description, false); + } + if (serid >= tpermutations[3].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * (branchsize - serid - 2 + backbonesize) + verticalstep / 2, description, true); + } + break; + case 4: + if (serid < tpermutations[4].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * serid + verticalstep / 2 - verticalstep / 8, description, false); + } + if (serid >= tpermutations[4].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid + branchsize - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + break; + case 5: + if (serid < tpermutations[5].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + if (serid >= tpermutations[5].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * (branchsize - serid - 2 + backbonesize) + verticalstep / 2, description, true); + } + break; + default: + break; } } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * position + horizontalstep / 2 + horizontalstep / 4 + horizontalstep / 8, topmargin + verticalstep * branchsize - 35, name, false); - } - position++; - } - break; - case 5: - if (m < tpermutations[i].middlebranchstart) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep * (position + tpermutations[i].middlebranchend - tpermutations[i].middlebranchstart) + horizontalstep / 2 + horizontalstep / 4 + horizontalstep / 8, topmargin + verticalstep * branchsize - 35, name, false); - } - position++; - } - if (m >= tpermutations[i].middlebranchend) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - m - 1] > 0) { - name = to_string(i + 1) + "_" + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name[0] + to_string(len - m) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[j]].name.substr(1); - if (k >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[k]].summary; - } - insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * (branchsize - m - 2 + backbonesize) + verticalstep / 2 - verticalstep / 8, name, false); + + if (parameters->iondefinitions[(*thpeaks)[i].iontype].cterminal) { + switch (rotid) { + case 0: + if (serid < tpermutations[2].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + if (serid >= tpermutations[2].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid + branchsize - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + break; + case 1: + if (serid < tpermutations[5].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + if (serid >= tpermutations[5].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * (branchsize - serid - 2 + backbonesize) + verticalstep / 2, description, true); + } + break; + case 2: + if (serid < tpermutations[0].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep * serid + horizontalstep / 2 + horizontalstep / 4 + horizontalstep / 8, topmargin + verticalstep * branchsize - 35, description, false); + } + if (serid >= tpermutations[0].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep * (serid - branchsize) + horizontalstep / 2 + horizontalstep / 4 + horizontalstep / 8, topmargin + verticalstep * branchsize - 35, description, false); + } + break; + case 3: + if (serid < tpermutations[4].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * serid + verticalstep / 2 - verticalstep / 8, description, false); + } + if (serid >= tpermutations[4].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep * (backbonesize - serid + branchsize - 1), topmargin + verticalstep * branchsize + 35, description, false); + } + break; + case 4: + if (serid < tpermutations[3].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * serid + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, description, false); + } + if (serid >= tpermutations[3].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart - 25, topmargin + verticalstep * (branchsize - serid - 2 + backbonesize) + verticalstep / 2, description, true); + } + break; + case 5: + if (serid < tpermutations[1].middlebranchstart) { + insertLabel(labels, leftmargin + horizontalstep / 2 + horizontalstep * tpermutations[0].middlebranchstart + 25, topmargin + verticalstep * serid + verticalstep / 2 - verticalstep / 8, description, false); + } + if (serid >= tpermutations[1].middlebranchend) { + insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * (serid - branchsize) + horizontalstep / 2, topmargin + verticalstep * branchsize - 35, description, false); + } + break; + default: + break; } } - break; - default: - break; + } + } + } } - coverageindex++; - } } - } - painter.setPen(QPen(Qt::red, 2, Qt::SolidLine)); - for (auto it = labels.begin(); it != labels.end(); ++it) { - if (it->alignright) { - painter.drawText(it->x - fm.width(it->label.c_str()), it->y, fm.width(it->label.c_str()), 20, Qt::AlignLeft, it->label.c_str()); - } - else { - painter.drawText(it->x, it->y, width(), 20, Qt::AlignLeft, it->label.c_str()); - } } + drawLabels(painter, labels, width()); + } } diff --git a/CycloBranch/gui/cBricksDatabaseProxyModel.cpp b/CycloBranch/gui/cBricksDatabaseProxyModel.cpp index 71ea697..3fcf08f 100644 --- a/CycloBranch/gui/cBricksDatabaseProxyModel.cpp +++ b/CycloBranch/gui/cBricksDatabaseProxyModel.cpp @@ -6,9 +6,14 @@ cBricksDatabaseProxyModel::cBricksDatabaseProxyModel(QObject *parent) : QSortFil } -void cBricksDatabaseProxyModel::initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox) { - this->rowsfiltercombobox = rowsfiltercombobox; - this->rowsfiltercomparatorcombobox = rowsfiltercomparatorcombobox; +void cBricksDatabaseProxyModel::initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2) { + filteroperator = rowsfilteroperator; + filtercombobox1 = rowsfiltercombobox1; + filtercomparatorcombobox1 = rowsfiltercomparatorcombobox1; + filterline1 = rowsfilterline1; + filtercombobox2 = rowsfiltercombobox2; + filtercomparatorcombobox2 = rowsfiltercomparatorcombobox2; + filterline2 = rowsfilterline2; } @@ -18,121 +23,64 @@ void cBricksDatabaseProxyModel::setWholeWord(bool wholeword) { bool cBricksDatabaseProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { - if (filterRegExp().isEmpty()) { + if (filterline1->text().isEmpty() && filterline2->text().isEmpty()) { return true; } - int col = rowsfiltercombobox->currentIndex() + 1; - - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::ByteArray) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() == filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() < filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() <= filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() > filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() >= filterRegExp().pattern().toDouble()) { - return true; - } - break; - default: - break; + int col1 = filtercombobox1->currentIndex() + 1; + int col2 = filtercombobox2->currentIndex() + 1; + + bool result1 = false; + bool result2 = false; + + if (!filterline1->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::ByteArray) { + result1 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).toString(); + result1 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, qstr, filterline1->text(), sourceParent, wholeword, filterCaseSensitivity()); } - } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::String) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (wholeword) { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) == 0) { - return true; - } - } - else { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().contains(filterRegExp())) { - return true; - } - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) < 0) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) <= 0) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) > 0) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) >= 0) { - return true; - } - break; - default: - break; + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::Int) { + result1 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); } } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::Int) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() == filterRegExp().pattern().toInt()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() < filterRegExp().pattern().toInt()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() <= filterRegExp().pattern().toInt()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() > filterRegExp().pattern().toInt()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() >= filterRegExp().pattern().toInt()) { - return true; - } - break; - default: - break; + if (!filterline2->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::ByteArray) { + result2 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).toString(); + result2 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, qstr, filterline2->text(), sourceParent, wholeword, filterCaseSensitivity()); } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::Int) { + result2 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + } + + if (!filterline1->text().isEmpty() && filterline2->text().isEmpty()) { + return result1; + } + + if (filterline1->text().isEmpty() && !filterline2->text().isEmpty()) { + return result2; + } + + if (filteroperator->currentIndex() == 0) { + return result1 || result2; } - return false; + return result1 && result2; } bool cBricksDatabaseProxyModel::lessThan(const QModelIndex &left, const QModelIndex &right) const { - if (left.column() == 6) { + if (left.column() == 7) { return false; } diff --git a/CycloBranch/gui/cBricksDatabaseProxyModel.h b/CycloBranch/gui/cBricksDatabaseProxyModel.h index 230b366..32cb2e6 100644 --- a/CycloBranch/gui/cBricksDatabaseProxyModel.h +++ b/CycloBranch/gui/cBricksDatabaseProxyModel.h @@ -11,7 +11,8 @@ #include #include #include -#include "core/cFragmentIons.h" +#include +#include "core/utilities.h" /** @@ -23,8 +24,13 @@ class cBricksDatabaseProxyModel : public QSortFilterProxyModel { private: - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; + QComboBox* filteroperator; + QComboBox* filtercombobox1; + QComboBox* filtercomparatorcombobox1; + QLineEdit* filterline1; + QComboBox* filtercombobox2; + QComboBox* filtercomparatorcombobox2; + QLineEdit* filterline2; bool wholeword; public: @@ -39,10 +45,15 @@ class cBricksDatabaseProxyModel : public QSortFilterProxyModel { /** \brief Initialize the model. - \param rowsfiltercombobox reference to the combobox with selection of columns - \param rowsfiltercomparatorcombobox reference to the combobox with selection of comparator + \param rowsfilteroperator reference to the combobox with operator selection + \param rowsfiltercombobox1 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox1 reference to the combobox with selection of comparator + \param rowsfilterline1 reference to a text field + \param rowsfiltercombobox2 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox2 reference to the combobox with selection of comparator + \param rowsfilterline2 reference to a text field */ - void initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox); + void initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2); /** diff --git a/CycloBranch/gui/cBricksDatabaseWidget.cpp b/CycloBranch/gui/cBricksDatabaseWidget.cpp index 3001632..3eaf009 100644 --- a/CycloBranch/gui/cBricksDatabaseWidget.cpp +++ b/CycloBranch/gui/cBricksDatabaseWidget.cpp @@ -42,22 +42,45 @@ cBricksDatabaseWidget::cBricksDatabaseWidget(QWidget* parent) { menuEdit = new QMenu(tr("&Edit"), this); menuHelp = new QMenu(tr("&Help"), this); - rowsfiltercombobox = new QComboBox(); - rowsfiltercombobox->setToolTip("Column to be Searched"); - rowsfiltercombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfiltercomparatorcombobox = new QComboBox(); - rowsfiltercomparatorcombobox->setToolTip("Type of Comparison"); - rowsfiltercomparatorcombobox->addItem("="); - rowsfiltercomparatorcombobox->addItem("<"); - rowsfiltercomparatorcombobox->addItem("<="); - rowsfiltercomparatorcombobox->addItem(">"); - rowsfiltercomparatorcombobox->addItem(">="); - rowsfiltercomparatorcombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfilterline = new QLineEdit(); - rowsfilterline->setMinimumWidth(300); - rowsfilterline->setToolTip("Text to Find"); + rowsfilteroperator = new QComboBox(); + rowsfilteroperator->setToolTip("OR = any condition must be met; AND = all conditions must be met."); + rowsfilteroperator->addItem("OR"); + rowsfilteroperator->addItem("AND"); + rowsfilteroperator->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercombobox1 = new QComboBox(); + rowsfiltercombobox1->setToolTip("Column to be Searched"); + rowsfiltercombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox1 = new QComboBox(); + rowsfiltercomparatorcombobox1->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox1->addItem("="); + rowsfiltercomparatorcombobox1->addItem("<"); + rowsfiltercomparatorcombobox1->addItem("<="); + rowsfiltercomparatorcombobox1->addItem(">"); + rowsfiltercomparatorcombobox1->addItem(">="); + rowsfiltercomparatorcombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline1 = new QLineEdit(); + rowsfilterline1->setMinimumWidth(150); + rowsfilterline1->setToolTip("Text to Find"); + + rowsfiltercombobox2 = new QComboBox(); + rowsfiltercombobox2->setToolTip("Column to be Searched"); + rowsfiltercombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox2 = new QComboBox(); + rowsfiltercomparatorcombobox2->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox2->addItem("="); + rowsfiltercomparatorcombobox2->addItem("<"); + rowsfiltercomparatorcombobox2->addItem("<="); + rowsfiltercomparatorcombobox2->addItem(">"); + rowsfiltercomparatorcombobox2->addItem(">="); + rowsfiltercomparatorcombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline2 = new QLineEdit(); + rowsfilterline2->setMinimumWidth(150); + rowsfilterline2->setToolTip("Text to Find"); rowsfiltercasesensitive = new QCheckBox(); rowsfiltercasesensitive->setToolTip("Case Sensitive"); @@ -75,11 +98,19 @@ cBricksDatabaseWidget::cBricksDatabaseWidget(QWidget* parent) { rowsfilterclearbutton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); rowsfilterhbox = new QHBoxLayout(); - rowsfilterhbox->addWidget(rowsfiltercombobox); + rowsfilterhbox->addWidget(rowsfiltercombobox1); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox1); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfilterline); + rowsfilterhbox->addWidget(rowsfilterline1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilteroperator); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilterline2); rowsfilterhbox->addSpacing(10); rowsfilterhbox->addWidget(rowsfiltercasesensitive); rowsfilterhbox->addSpacing(10); @@ -97,7 +128,7 @@ cBricksDatabaseWidget::cBricksDatabaseWidget(QWidget* parent) { proxymodel = new cBricksDatabaseProxyModel(this); proxymodel->setSourceModel(databasemodel); proxymodel->setDynamicSortFilter(false); - proxymodel->initialize(rowsfiltercombobox, rowsfiltercomparatorcombobox); + proxymodel->initialize(rowsfilteroperator, rowsfiltercombobox1, rowsfiltercomparatorcombobox1, rowsfilterline1, rowsfiltercombobox2, rowsfiltercomparatorcombobox2, rowsfilterline2); database->setModel(proxymodel); database->setSortingEnabled(true); @@ -127,7 +158,7 @@ cBricksDatabaseWidget::cBricksDatabaseWidget(QWidget* parent) { actionSaveDatabase->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); actionSaveDatabase->setToolTip("Save Database... (Ctrl + S)"); toolbarFile->addAction(actionSaveDatabase); - connect(actionSaveDatabase, SIGNAL(triggered()), this, SLOT(saveDatabase())); + connect(actionSaveDatabase, SIGNAL(triggered()), this, SLOT(saveDatabaseCheck())); actionSaveDatabaseAs = new QAction(QIcon(":/images/icons/86.png"), tr("Save &Database As..."), this); actionSaveDatabaseAs->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D)); @@ -180,6 +211,8 @@ cBricksDatabaseWidget::cBricksDatabaseWidget(QWidget* parent) { actionHTMLDocumentation->setToolTip("Show HTML Documentation (F1)"); toolbarHelp->addAction(actionHTMLDocumentation); connect(actionHTMLDocumentation, SIGNAL(triggered()), this, SLOT(showHTMLDocumentation())); + + addToolBarBreak(); toolbarFilter = addToolBar(tr("Filter")); toolbarFilter->addWidget(rowsfilterwidget); @@ -215,7 +248,7 @@ cBricksDatabaseWidget::cBricksDatabaseWidget(QWidget* parent) { setCentralWidget(mainwidget); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); databasefile = ""; @@ -238,9 +271,13 @@ cBricksDatabaseWidget::~cBricksDatabaseWidget() { delete proxymodel; delete database; - delete rowsfiltercombobox; - delete rowsfiltercomparatorcombobox; - delete rowsfilterline; + delete rowsfilteroperator; + delete rowsfiltercombobox1; + delete rowsfiltercomparatorcombobox1; + delete rowsfilterline1; + delete rowsfiltercombobox2; + delete rowsfiltercomparatorcombobox2; + delete rowsfilterline2; delete rowsfiltercasesensitive; delete rowsfilterwholeword; delete rowsfilterbutton; @@ -290,7 +327,7 @@ void cBricksDatabaseWidget::deleteTable() { void cBricksDatabaseWidget::resetHeader() { - databasemodel->setColumnCount(7); + databasemodel->setColumnCount(8); databasemodel->setHorizontalHeaderItem(0, new QStandardItem()); database->setItemDelegateForColumn(0, new cCheckBoxDelegate()); @@ -298,13 +335,16 @@ void cBricksDatabaseWidget::resetHeader() { databasemodel->setHorizontalHeaderItem(2, new QStandardItem("Acronym(s)")); databasemodel->setHorizontalHeaderItem(3, new QStandardItem("Residue Summary")); databasemodel->setHorizontalHeaderItem(4, new QStandardItem("Monoisotopic Residue Mass")); - databasemodel->setHorizontalHeaderItem(5, new QStandardItem("Reference(s)")); - databasemodel->setHorizontalHeaderItem(6, new QStandardItem("Preview")); - database->setItemDelegateForColumn(6, new cMultipleButtonDelegate()); + databasemodel->setHorizontalHeaderItem(5, new QStandardItem("Neutral Loss(es)")); + databasemodel->setHorizontalHeaderItem(6, new QStandardItem("Reference(s)")); + databasemodel->setHorizontalHeaderItem(7, new QStandardItem("Preview")); + database->setItemDelegateForColumn(7, new cMultipleButtonDelegate()); - rowsfiltercombobox->clear(); + rowsfiltercombobox1->clear(); + rowsfiltercombobox2->clear(); for (int i = 1; i < databasemodel->columnCount() - 1; i++) { - rowsfiltercombobox->addItem(databasemodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox1->addItem(databasemodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox2->addItem(databasemodel->horizontalHeaderItem(i)->text()); } database->horizontalHeader()->setStretchLastSection(true); @@ -313,7 +353,7 @@ void cBricksDatabaseWidget::resetHeader() { } database->setColumnWidth(1, 400); database->setColumnWidth(2, 400); - database->setColumnWidth(5, 400); + database->setColumnWidth(6, 400); } @@ -322,20 +362,52 @@ bool cBricksDatabaseWidget::checkTable() { int checkslash; for (int i = 0; i < databasemodel->rowCount(); i++) { checkslash = numberOfOccurrences(databasemodel->item(i, 1)->text().toStdString(),'/'); - if ((checkslash != numberOfOccurrences(databasemodel->item(i, 2)->text().toStdString(),'/')) || (checkslash != numberOfOccurrences(databasemodel->item(i, 5)->text().toStdString(),'/'))) { + if ((checkslash != numberOfOccurrences(databasemodel->item(i, 2)->text().toStdString(),'/')) || (checkslash != numberOfOccurrences(databasemodel->item(i, 6)->text().toStdString(), '/'))) { QMessageBox msgBox; QString errstr = "Syntax error in the row no. "; errstr += to_string(i + 1).c_str(); - errstr += ":\nThe number of '/' must be equal in the fields Name(s), Acronym(s) and Reference(s) !\n\nNote: The symbol '/' separates izomers of a building block."; + errstr += ":\nThe number of '/' must be equal in the fields Name(s), Acronym(s), Neutral Loss(es), and Reference(s) !\n\nNote: The symbol '/' separates izomers of a building block."; msgBox.setText(errstr); msgBox.exec(); return false; } } - // check summary formulas + cSummaryFormula formula; + string tmpstr; + + // check molecular formulas for (int i = 0; i < databasemodel->rowCount(); i++) { - if (!checkFormula(i, databasemodel->item(i, 3)->text().toStdString())) { + tmpstr = databasemodel->item(i, 3)->text().toStdString(); + formula.setFormula(tmpstr); + if (!checkFormula(i, formula)) { + return false; + } + else { + if (databasemodel->item(i, 4)) { + databasemodel->item(i, 4)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(formula.getMass())), Qt::DisplayRole); + } + } + } + + // check neutral losses + string lossstr; + size_t last, next; + for (int i = 0; i < databasemodel->rowCount(); i++) { + lossstr = databasemodel->item(i, 5)->text().toStdString(); + last = 0; + next = 0; + while ((next = lossstr.find(";", last)) != string::npos) { + tmpstr = lossstr.substr(last, next - last); + formula.setFormula(tmpstr); + if (!checkFormula(i, formula)) { + return false; + } + last = next + 1; + } + tmpstr = lossstr.substr(last); + formula.setFormula(tmpstr); + if (!checkFormula(i, formula)) { return false; } } @@ -344,10 +416,8 @@ bool cBricksDatabaseWidget::checkTable() { } -bool cBricksDatabaseWidget::checkFormula(int row, const string& summary) { - cSummaryFormula formula; +bool cBricksDatabaseWidget::checkFormula(int row, cSummaryFormula& formula) { string errmsg; - formula.setFormula(summary); if (!formula.isValid(errmsg)) { QMessageBox msgBox; QString errstr = "Syntax error in the row no. "; @@ -358,9 +428,6 @@ bool cBricksDatabaseWidget::checkFormula(int row, const string& summary) { msgBox.exec(); return false; } - if (databasemodel->item(row, 4)) { - databasemodel->item(row, 4)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(formula.getMass())), Qt::DisplayRole); - } return true; } @@ -385,13 +452,13 @@ void cBricksDatabaseWidget::setDataModified(bool datamodified) { void cBricksDatabaseWidget::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return)) { - if (rowsfilterline->hasFocus()) { + if (rowsfilterline1->hasFocus() || rowsfilterline2->hasFocus()) { filterRows(); } } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_F)) { - rowsfilterline->setFocus(); + rowsfilterline1->setFocus(); } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_T)) { @@ -478,10 +545,13 @@ void cBricksDatabaseWidget::openDatabase() { databasemodel->item(i, 4)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(bricks[i].getMass())), Qt::DisplayRole); databasemodel->setItem(i, 5, new QStandardItem()); - databasemodel->item(i, 5)->setText(bricks[i].getReferencesAsString().c_str()); + databasemodel->item(i, 5)->setText(bricks[i].getLosses().c_str()); + + databasemodel->setItem(i, 6, new QStandardItem()); + databasemodel->item(i, 6)->setText(bricks[i].getReferencesAsString().c_str()); - databasemodel->setItem(i, 6, new QStandardItem()); - databasemodel->item(i, 6)->setText(bricks[i].getAcronymsWithReferencesAsHTMLString().c_str()); + databasemodel->setItem(i, 7, new QStandardItem()); + databasemodel->item(i, 7)->setText(bricks[i].getAcronymsWithReferencesAsHTMLString().c_str()); progress.setValue(i); if (progress.wasCanceled()) { @@ -505,7 +575,7 @@ void cBricksDatabaseWidget::openDatabase() { } database->setColumnWidth(1, 400); database->setColumnWidth(2, 400); - database->setColumnWidth(5, 400); + database->setColumnWidth(6, 400); progress.setValue(bricks.size()); @@ -574,6 +644,10 @@ bool cBricksDatabaseWidget::saveDatabase() { b.setMass(proxymodel->index(i, j).data(Qt::DisplayRole).toDouble()); break; case 5: + s = proxymodel->index(i, j).data(Qt::DisplayRole).toString().toStdString(); + b.setLosses(removeWhiteSpacesExceptSpaces(s)); + break; + case 6: s = proxymodel->index(i, j).data(Qt::DisplayRole).toString().toStdString(); b.setReferences(removeWhiteSpacesExceptSpaces(s)); break; @@ -620,6 +694,18 @@ bool cBricksDatabaseWidget::saveDatabaseAs() { } +void cBricksDatabaseWidget::saveDatabaseCheck() { + QMessageBox::StandardButton reply; + reply = QMessageBox::question(this, appname, "Save changes ?", QMessageBox::Yes | QMessageBox::No); + + if (reply == QMessageBox::No) { + return; + } + + saveDatabase(); +} + + void cBricksDatabaseWidget::addRow() { resetFilter(); @@ -635,6 +721,7 @@ void cBricksDatabaseWidget::addRow() { databasemodel->setItem(row, 4, new QStandardItem()); databasemodel->setItem(row, 5, new QStandardItem()); databasemodel->setItem(row, 6, new QStandardItem()); + databasemodel->setItem(row, 7, new QStandardItem()); database->scrollToBottom(); } @@ -661,17 +748,24 @@ void cBricksDatabaseWidget::itemChanged(QStandardItem* item) { // recalculate mass when formula is changed if (item->column() == 3) { - checkFormula(item->row(), item->text().toStdString()); + string tmpstr = item->text().toStdString(); + cSummaryFormula formula; + formula.setFormula(tmpstr); + if (checkFormula(item->row(), formula)) { + if (databasemodel->item(item->row(), 4)) { + databasemodel->item(item->row(), 4)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(formula.getMass())), Qt::DisplayRole); + } + } } // update references preview - if (((item->column() == 2) || (item->column() == 5)) && databasemodel->item(item->row(), 6)) { + if (((item->column() == 2) || (item->column() == 6)) && databasemodel->item(item->row(), 7)) { cBrick b; b.setAcronyms(databasemodel->item(item->row(), 2)->text().toStdString()); - b.setReferences(databasemodel->item(item->row(), 5)->text().toStdString()); + b.setReferences(databasemodel->item(item->row(), 6)->text().toStdString()); - databasemodel->item(item->row(), 6)->setText(b.getAcronymsWithReferencesAsHTMLString().c_str()); + databasemodel->item(item->row(), 7)->setText(b.getAcronymsWithReferencesAsHTMLString().c_str()); } if (item->column() > 0) { @@ -689,12 +783,13 @@ void cBricksDatabaseWidget::filterRows() { proxymodel->setWholeWord(rowsfilterwholeword->isChecked()); proxymodel->setFilterKeyColumn(-1); proxymodel->setFilterCaseSensitivity(rowsfiltercasesensitive->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive); - proxymodel->setFilterFixedString(rowsfilterline->text()); + proxymodel->setFilterFixedString(""); } void cBricksDatabaseWidget::resetFilter() { - rowsfilterline->setText(""); + rowsfilterline1->setText(""); + rowsfilterline2->setText(""); database->horizontalHeader()->setSortIndicator(-1, Qt::AscendingOrder); proxymodel->sort(-1); @@ -779,10 +874,13 @@ void cBricksDatabaseWidget::importDatabase() { databasemodel->item(i + originalrowcount, 4)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(importedbricks[i].getMass())), Qt::DisplayRole); databasemodel->setItem(i + originalrowcount, 5, new QStandardItem()); - databasemodel->item(i + originalrowcount, 5)->setText(importedbricks[i].getReferencesAsString().c_str()); + databasemodel->item(i + originalrowcount, 5)->setText(importedbricks[i].getLosses().c_str()); + + databasemodel->setItem(i + originalrowcount, 6, new QStandardItem()); + databasemodel->item(i + originalrowcount, 6)->setText(importedbricks[i].getReferencesAsString().c_str()); - databasemodel->setItem(i + originalrowcount, 6, new QStandardItem()); - databasemodel->item(i + originalrowcount, 6)->setText(importedbricks[i].getAcronymsWithReferencesAsHTMLString().c_str()); + databasemodel->setItem(i + originalrowcount, 7, new QStandardItem()); + databasemodel->item(i + originalrowcount, 7)->setText(importedbricks[i].getAcronymsWithReferencesAsHTMLString().c_str()); bricks.push_back(importedbricks[i]); @@ -808,7 +906,7 @@ void cBricksDatabaseWidget::importDatabase() { } database->setColumnWidth(1, 400); database->setColumnWidth(2, 400); - database->setColumnWidth(5, 400); + database->setColumnWidth(6, 400); if (progress.wasCanceled()) { setDataModified(false); diff --git a/CycloBranch/gui/cBricksDatabaseWidget.h b/CycloBranch/gui/cBricksDatabaseWidget.h index e6d2f8c..7108f16 100644 --- a/CycloBranch/gui/cBricksDatabaseWidget.h +++ b/CycloBranch/gui/cBricksDatabaseWidget.h @@ -105,9 +105,13 @@ class cBricksDatabaseWidget : public QMainWindow QToolBar* toolbarFilter; QWidget* rowsfilterwidget; QHBoxLayout* rowsfilterhbox; - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; - QLineEdit* rowsfilterline; + QComboBox* rowsfilteroperator; + QComboBox* rowsfiltercombobox1; + QComboBox* rowsfiltercomparatorcombobox1; + QLineEdit* rowsfilterline1; + QComboBox* rowsfiltercombobox2; + QComboBox* rowsfiltercomparatorcombobox2; + QLineEdit* rowsfilterline2; QCheckBox* rowsfiltercasesensitive; QCheckBox* rowsfilterwholeword; QPushButton* rowsfilterbutton; @@ -133,7 +137,7 @@ class cBricksDatabaseWidget : public QMainWindow bool checkTable(); - bool checkFormula(int row, const string& summary); + bool checkFormula(int row, cSummaryFormula& formula); void setDataModified(bool datamodified); @@ -157,6 +161,8 @@ private slots: bool saveDatabaseAs(); + void saveDatabaseCheck(); + void addRow(); void removeSelectedRows(); diff --git a/CycloBranch/gui/cChromatogramWindow.cpp b/CycloBranch/gui/cChromatogramWindow.cpp index ef6fc1e..f151a71 100644 --- a/CycloBranch/gui/cChromatogramWindow.cpp +++ b/CycloBranch/gui/cChromatogramWindow.cpp @@ -16,6 +16,7 @@ cChromatogramWindow::cChromatogramWindow(cTheoreticalSpectrumList& theoreticalsp menuHelp = new QMenu(tr("&Help"), this); chromatogramwindowwidget = new cChromatogramWindowWidget(theoreticalspectrumlist, this); + connect(chromatogramwindowwidget, SIGNAL(chromatogramWidgetDoubleClicked(int)), this, SLOT(chromatogramDoubleClickedSlot(int))); toolbarFile = addToolBar(tr("File")); @@ -55,6 +56,23 @@ cChromatogramWindow::cChromatogramWindow(cTheoreticalSpectrumList& theoreticalsp toolbarView->addSeparator(); + actionMouseSelection = new QAction(QIcon(":/images/icons/64.png"), tr("Mouse Selection Tool"), this); + actionMouseSelection->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_T)); + actionMouseSelection->setToolTip("Mouse Selection Tool (Ctrl + T)"); + actionMouseSelection->setCheckable(true); + actionMouseSelection->setChecked(true); + actionMouseSelection->setEnabled(true); + toolbarView->addAction(actionMouseSelection); + connect(actionMouseSelection, SIGNAL(toggled(bool)), chromatogramwindowwidget, SLOT(enableMouseSelectionTool(bool))); + + actionRetentionTime = new QAction(QIcon(":/images/icons/12.png"), tr("Retention Ti&me"), this); + actionRetentionTime->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_M)); + actionRetentionTime->setToolTip("Retention Time (Ctrl + M)"); + actionRetentionTime->setCheckable(true); + actionRetentionTime->setChecked(true); + toolbarView->addAction(actionRetentionTime); + connect(actionRetentionTime, SIGNAL(toggled(bool)), chromatogramwindowwidget, SLOT(retentionTimeStateChanged(bool))); + actionAbsoluteIntensity = new QAction(QIcon(":/images/icons/11.png"), tr("&Absolute Intensity"), this); actionAbsoluteIntensity->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_I)); actionAbsoluteIntensity->setToolTip("Absolute Intensity (Ctrl + I)"); @@ -89,24 +107,70 @@ cChromatogramWindow::cChromatogramWindow(cTheoreticalSpectrumList& theoreticalsp connect(actionHTMLDocumentation, SIGNAL(triggered()), this, SLOT(showHTMLDocumentation())); + toolbarTime = addToolBar(tr("Time and Spectrum ID")); + + labelretentiontime = new QLabel(tr("Time: ")); + + minretentiontime = new QDoubleSpinBox(); + minretentiontime->setToolTip("Minimum time"); + minretentiontime->setDecimals(6); + minretentiontime->setRange(0, 10000000); + minretentiontime->setSingleStep(1); + + labelseparatorretentiontime = new QLabel(tr("-")); + + maxretentiontime = new QDoubleSpinBox(); + maxretentiontime->setToolTip("Maximum time"); + maxretentiontime->setDecimals(6); + maxretentiontime->setRange(0, 10000000); + maxretentiontime->setSingleStep(1); + + setretentiontimeinterval = new QPushButton("Set Time"); + setretentiontimeinterval->setMinimumWidth(75); + connect(setretentiontimeinterval, SIGNAL(released()), this, SLOT(setRetentionTimeInterval())); + connect(this, SIGNAL(emitRetentionTimeInterval(double, double)), chromatogramwindowwidget, SLOT(setRetentionTimeInterval(double, double))); + + resetretentiontimeinterval = new QPushButton("Reset Time"); + resetretentiontimeinterval->setMinimumWidth(75); + connect(resetretentiontimeinterval, SIGNAL(released()), chromatogramwindowwidget, SLOT(resetRetentionTimeInterval())); + connect(chromatogramwindowwidget, SIGNAL(updateRetentionTimeInterval(double, double)), this, SLOT(updateRetentionTimeInterval(double, double))); + + hboxretentiontime = new QHBoxLayout(); + hboxretentiontime->addWidget(labelretentiontime); + hboxretentiontime->addWidget(minretentiontime); + hboxretentiontime->addWidget(labelseparatorretentiontime); + hboxretentiontime->addWidget(maxretentiontime); + hboxretentiontime->addSpacing(5); + hboxretentiontime->addWidget(setretentiontimeinterval); + hboxretentiontime->addSpacing(5); + hboxretentiontime->addWidget(resetretentiontimeinterval); + + widgetretentiontime = new QWidget(); + widgetretentiontime->setLayout(hboxretentiontime); + + toolbarTime->addWidget(widgetretentiontime); + toolbarTime->addSeparator(); + labelscanid = new QLabel(tr("Spectrum ID: ")); minscanid = new QSpinBox(); + minscanid->setToolTip("Minimum spectrum ID"); minscanid->setRange(1, 1000000); minscanid->setSingleStep(1); - labelseparator = new QLabel(tr("-")); + labelseparatorscanid = new QLabel(tr("-")); maxscanid = new QSpinBox(); + maxscanid->setToolTip("Maximum spectrum ID"); maxscanid->setRange(1, 1000000); maxscanid->setSingleStep(1); - setscanidinterval = new QPushButton("Set"); + setscanidinterval = new QPushButton("Set ID"); setscanidinterval->setMinimumWidth(75); connect(setscanidinterval, SIGNAL(released()), this, SLOT(setScanIDInterval())); connect(this, SIGNAL(emitScanIDInterval(int, int)), chromatogramwindowwidget, SLOT(setScanIDInterval(int, int))); - resetscanidinterval = new QPushButton("Reset"); + resetscanidinterval = new QPushButton("Reset ID"); resetscanidinterval->setMinimumWidth(75); connect(resetscanidinterval, SIGNAL(released()), chromatogramwindowwidget, SLOT(resetScanIDInterval())); connect(chromatogramwindowwidget, SIGNAL(updateScanIDInterval(int, int)), this, SLOT(updateScanIDInterval(int, int))); @@ -114,7 +178,7 @@ cChromatogramWindow::cChromatogramWindow(cTheoreticalSpectrumList& theoreticalsp hboxscanid = new QHBoxLayout(); hboxscanid->addWidget(labelscanid); hboxscanid->addWidget(minscanid); - hboxscanid->addWidget(labelseparator); + hboxscanid->addWidget(labelseparatorscanid); hboxscanid->addWidget(maxscanid); hboxscanid->addSpacing(5); hboxscanid->addWidget(setscanidinterval); @@ -124,18 +188,7 @@ cChromatogramWindow::cChromatogramWindow(cTheoreticalSpectrumList& theoreticalsp widgetscanid = new QWidget(); widgetscanid->setLayout(hboxscanid); - toolbarScanID = addToolBar(tr("Spectrum ID")); - - actionMouseSelection = new QAction(QIcon(":/images/icons/64.png"), tr("Mouse Spectrum ID Selection Tool"), this); - actionMouseSelection->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_T)); - actionMouseSelection->setToolTip("Mouse Spectrum ID Selection Tool (Ctrl + T)"); - actionMouseSelection->setCheckable(true); - actionMouseSelection->setChecked(true); - actionMouseSelection->setEnabled(true); - toolbarScanID->addAction(actionMouseSelection); - connect(actionMouseSelection, SIGNAL(toggled(bool)), chromatogramwindowwidget, SLOT(enableMouseSelectionTool(bool))); - - toolbarScanID->addWidget(widgetscanid); + toolbarTime->addWidget(widgetscanid); menuFile->addAction(actionExportImage); @@ -146,6 +199,8 @@ cChromatogramWindow::cChromatogramWindow(cTheoreticalSpectrumList& theoreticalsp menuView->addAction(actionZoomOut); menuView->addAction(actionZoomReset); menuView->addSeparator(); + menuView->addAction(actionMouseSelection); + menuView->addAction(actionRetentionTime); menuView->addAction(actionAbsoluteIntensity); menuView->addSeparator(); menuView->addAction(actionHideTIC); @@ -162,17 +217,25 @@ cChromatogramWindow::cChromatogramWindow(cTheoreticalSpectrumList& theoreticalsp setCentralWidget(chromatogramwindowwidget); centralWidget()->setContentsMargins(0, 0, 0, 0); - resize(1280, 780); - + resize(defaultwinsizex, defaultwinsizey); } cChromatogramWindow::~cChromatogramWindow() { delete chromatogramwindowwidget; + delete labelretentiontime; + delete minretentiontime; + delete labelseparatorretentiontime; + delete maxretentiontime; + delete setretentiontimeinterval; + delete resetretentiontimeinterval; + delete hboxretentiontime; + delete widgetretentiontime; + delete labelscanid; delete minscanid; - delete labelseparator; + delete labelseparatorscanid; delete maxscanid; delete setscanidinterval; delete resetscanidinterval; @@ -184,11 +247,12 @@ cChromatogramWindow::~cChromatogramWindow() { delete actionZoomIn; delete actionZoomOut; delete actionZoomReset; + delete actionMouseSelection; + delete actionRetentionTime; delete actionAbsoluteIntensity; delete actionHideTIC; delete actionHideEIC; delete actionHTMLDocumentation; - delete actionMouseSelection; delete menuFile; delete menuView; @@ -204,9 +268,19 @@ void cChromatogramWindow::closeEvent(QCloseEvent *event) { } +void cChromatogramWindow::recalculateTICChromatogram() { + chromatogramwindowwidget->recalculateTICChromatogram(); +} + + void cChromatogramWindow::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return)) { - setScanIDInterval(); + if (minscanid->hasFocus() || maxscanid->hasFocus()) { + setScanIDInterval(); + } + if (minretentiontime->hasFocus() || maxretentiontime->hasFocus()) { + setRetentionTimeInterval(); + } } event->accept(); @@ -264,6 +338,17 @@ void cChromatogramWindow::closeWindow() { } +void cChromatogramWindow::updateRetentionTimeInterval(double mintime, double maxtime) { + this->minretentiontime->setValue(mintime); + this->maxretentiontime->setValue(maxtime); +} + + +void cChromatogramWindow::setRetentionTimeInterval() { + emit emitRetentionTimeInterval(minretentiontime->value(), maxretentiontime->value()); +} + + void cChromatogramWindow::updateScanIDInterval(int minid, int maxid) { this->minscanid->setValue(minid); this->maxscanid->setValue(maxid); @@ -288,3 +373,8 @@ void cChromatogramWindow::showHTMLDocumentation() { #endif } + +void cChromatogramWindow::chromatogramDoubleClickedSlot(int scanid) { + emit doubleClickedScanIDSignal(scanid); +} + diff --git a/CycloBranch/gui/cChromatogramWindow.h b/CycloBranch/gui/cChromatogramWindow.h index 427f14a..2d3018c 100644 --- a/CycloBranch/gui/cChromatogramWindow.h +++ b/CycloBranch/gui/cChromatogramWindow.h @@ -53,6 +53,12 @@ class cChromatogramWindow : public QMainWindow void closeEvent(QCloseEvent *event); + /** + \brief Recalculate TIC chromatogram. + */ + void recalculateTICChromatogram(); + + private: QWidget* parent; @@ -71,18 +77,28 @@ class cChromatogramWindow : public QMainWindow QAction* actionZoomIn; QAction* actionZoomOut; QAction* actionZoomReset; + QAction* actionMouseSelection; + QAction* actionRetentionTime; QAction* actionAbsoluteIntensity; QAction* actionHideTIC; QAction* actionHideEIC; - QToolBar* toolbarScanID; - QAction* actionMouseSelection; + QToolBar* toolbarTime; + + QWidget* widgetretentiontime; + QHBoxLayout* hboxretentiontime; + QLabel* labelretentiontime; + QDoubleSpinBox* minretentiontime; + QLabel* labelseparatorretentiontime; + QDoubleSpinBox* maxretentiontime; + QPushButton* setretentiontimeinterval; + QPushButton* resetretentiontimeinterval; QWidget* widgetscanid; QHBoxLayout* hboxscanid; QLabel* labelscanid; QSpinBox* minscanid; - QLabel* labelseparator; + QLabel* labelseparatorscanid; QSpinBox* maxscanid; QPushButton* setscanidinterval; QPushButton* resetscanidinterval; @@ -107,13 +123,28 @@ class cChromatogramWindow : public QMainWindow /** - \brief The signal is emitted when the range of scans has been changed. + \brief The signal is emitted when the range of retention time has been changed. + \param mintime minimum retention time + \param maxtime maximum retention time + */ + void emitRetentionTimeInterval(double mintime, double maxtime); + + + /** + \brief The signal is emitted when the range of scan numbers has been changed. \param minid minimum scan id \param maxid maximum scan id */ void emitScanIDInterval(int minid, int maxid); + /** + \brief The signal is emitted a chromatographic peak was double clicked. + \param scanid scan id + */ + void doubleClickedScanIDSignal(int scanid); + + private slots: @@ -123,6 +154,12 @@ private slots: void closeWindow(); + void updateRetentionTimeInterval(double mintime, double maxtime); + + + void setRetentionTimeInterval(); + + void updateScanIDInterval(int minid, int maxid); @@ -135,6 +172,8 @@ private slots: void showHTMLDocumentation(); + void chromatogramDoubleClickedSlot(int scanid); + }; #endif diff --git a/CycloBranch/gui/cChromatogramWindowWidget.cpp b/CycloBranch/gui/cChromatogramWindowWidget.cpp index f632c17..49fc20f 100644 --- a/CycloBranch/gui/cChromatogramWindowWidget.cpp +++ b/CycloBranch/gui/cChromatogramWindowWidget.cpp @@ -7,6 +7,7 @@ cChromatogramWindowWidget::cChromatogramWindowWidget(cTheoreticalSpectrumList& t ticchromatogram.clear(); eicchromatogram.clear(); + rtimes.clear(); currentscale = 1; factor = 0.2; @@ -15,6 +16,8 @@ cChromatogramWindowWidget::cChromatogramWindowWidget(cTheoreticalSpectrumList& t pressedy = -1; currentx = 0; currenty = 0; + mintime = 0; + maxtime = 0; minscan = 0; maxscan = 0; @@ -26,6 +29,7 @@ cChromatogramWindowWidget::cChromatogramWindowWidget(cTheoreticalSpectrumList& t firstshow = true; enablemouseselection = true; + retentiontime = true; absoluteintensity = true; hidetic = false; hideeic = false; @@ -135,6 +139,8 @@ void cChromatogramWindowWidget::recalculateTICChromatogram() { ticchromatogram.clear(); spectrumcount = theoreticalspectrumlist->size(); + + rtimes.clear(); QProgressDialog progress("Updating...", /*"Cancel"*/0, 0, spectrumcount, this); progress.setMinimumWidth(250); @@ -142,6 +148,8 @@ void cChromatogramWindowWidget::recalculateTICChromatogram() { progress.installEventFilter(&filter); progress.setMinimumDuration(0); progress.setWindowModality(Qt::ApplicationModal); + + rtimes.resize(spectrumcount); for (int i = 0; i < spectrumcount; i++) { intensity = 0; @@ -154,18 +162,22 @@ void cChromatogramWindowWidget::recalculateTICChromatogram() { chromatogrampeak.absoluteintensity = intensity; ticchromatogram.add(chromatogrampeak); + rtimes[i] = (*theoreticalspectrumlist)[i].getExperimentalSpectrum().getRetentionTime(); + progress.setValue(i); } + if ((spectrumcount > 0) && (rtimes[rtimes.size() - 1] == 0)) { + for (int i = 0; i < spectrumcount; i++) { + rtimes[i] = i + 1; + } + } + ticchromatogram.normalizeIntenzity(); progress.setValue(spectrumcount); - minscan = 1; - maxscan = max(1, ticchromatogram.size()); - emit updateScanIDInterval(minscan, maxscan); - - redrawScene(); + resetScanIDInterval(); } @@ -191,7 +203,16 @@ void cChromatogramWindowWidget::wheelEvent(QWheelEvent *event) { if (newmin < newmax) { minscan = newmin; maxscan = newmax; + emit updateScanIDInterval(minscan, maxscan); + + if ((rtimes.size() > 0) && (rtimes.size() == ticchromatogram.size())) { + mintime = rtimes[minscan - 1]; + maxtime = rtimes[maxscan - 1]; + emit updateRetentionTimeInterval(mintime, maxtime); + } + + redrawScene(); } @@ -215,6 +236,12 @@ void cChromatogramWindowWidget::mouseMoveEvent(QMouseEvent *event) { emit updateScanIDInterval(minscan, maxscan); + if ((rtimes.size() > 0) && (rtimes.size() == ticchromatogram.size())) { + mintime = rtimes[minscan - 1]; + maxtime = rtimes[maxscan - 1]; + emit updateRetentionTimeInterval(mintime, maxtime); + } + pressedx = currentx; pressedy = currenty; @@ -241,6 +268,12 @@ void cChromatogramWindowWidget::mouseReleaseEvent(QMouseEvent *event) { emit updateScanIDInterval(minscan, maxscan); + if ((rtimes.size() > 0) && (rtimes.size() == ticchromatogram.size())) { + mintime = rtimes[minscan - 1]; + maxtime = rtimes[maxscan - 1]; + emit updateRetentionTimeInterval(mintime, maxtime); + } + pressedx = -1; pressedy = -1; @@ -289,11 +322,35 @@ void cChromatogramWindowWidget::mousePressEvent(QMouseEvent *event) { } +void cChromatogramWindowWidget::mouseDoubleClickEvent(QMouseEvent *event) { + QGraphicsView::mouseDoubleClickEvent(event); + int currentscan; + + if (event->button() == Qt::LeftButton) { + QPointF p = mapToScene(event->x(), event->y()); + pressedx = (int)p.x(); + pressedy = (int)p.y(); + + currentx = pressedx; + currenty = pressedy; + + currentscan = getScanIDFromXPosition(currentx + origwidth / max(1, 2 * (maxscan - minscan + 1)), origwidth); + + emit chromatogramWidgetDoubleClicked(currentscan - 1); + + pressedx = -1; + currentx = -1; + + redrawScene(); + } + + event->accept(); +} + + void cChromatogramWindowWidget::showEvent(QShowEvent *event) { QGraphicsView::showEvent(event); - recalculateTICChromatogram(); - if (firstshow) { normalSize(); firstshow = false; @@ -317,7 +374,7 @@ void cChromatogramWindowWidget::resizeEvent(QResizeEvent *event) { int cChromatogramWindowWidget::getScanIDFromXPosition(int x, int w) { int scanid = (double)(x - leftmargin) / (double)(w - leftmargin - rightmargin)*(maxscan - minscan + 1) + minscan - 1; - return max(1, scanid); + return min(max(1, scanid), (int)ticchromatogram.size()); } @@ -351,6 +408,9 @@ void cChromatogramWindowWidget::redrawScene() { int peakscount = 0; + int printscan; + bool printintensity; + if (!hidetic) { if (absoluteintensity) { maxintensitytic = ticchromatogram.getMaximumAbsoluteIntensityFromMZInterval((double)minscan, (double)maxscan, false, false, other, false); @@ -398,18 +458,51 @@ void cChromatogramWindowWidget::redrawScene() { } scene->addLine(w - rightmargin, h - bottommargin, w - rightmargin, h - bottommargin + 10, QPen(Qt::black, 2, Qt::SolidLine)); - simpletext = scene->addSimpleText(QString::number(minscan - 1), myFont); + printscan = minscan - 1; + if (retentiontime) { + if (printscan - 1 >= 0) { + simpletext = scene->addSimpleText(QString::number(rtimes[printscan - 1]), myFont); + } + else { + simpletext = scene->addSimpleText(QString::number(0), myFont); + } + } + else { + simpletext = scene->addSimpleText(QString::number(printscan), myFont); + } simpletext->setPos(QPointF(leftmargin - simpletext->boundingRect().width() / 2, h - bottommargin + 12)); if (maxscan - minscan > rulergranularity) { xstep = (w - leftmargin - rightmargin) / rulergranularity; for (int i = 1; i < rulergranularity; i++) { - simpletext = scene->addSimpleText(QString::number(minscan + (maxscan - minscan) / rulergranularity * i), myFont); + printscan = minscan + (maxscan - minscan) / rulergranularity * i; + if (retentiontime) { + if (printscan - 1 >= 0) { + simpletext = scene->addSimpleText(QString::number(rtimes[printscan - 1]), myFont); + } + else { + simpletext = scene->addSimpleText(QString::number(0), myFont); + } + } + else { + simpletext = scene->addSimpleText(QString::number(printscan), myFont); + } simpletext->setPos(QPointF(leftmargin + xstep * i - simpletext->boundingRect().width() / 2, h - bottommargin + 12)); } } - simpletext = scene->addSimpleText(QString::number(maxscan), myFont); + printscan = maxscan; + if (retentiontime) { + if (printscan - 1 >= 0) { + simpletext = scene->addSimpleText(QString::number(rtimes[printscan - 1]), myFont); + } + else { + simpletext = scene->addSimpleText(QString::number(0), myFont); + } + } + else { + simpletext = scene->addSimpleText(QString::number(printscan), myFont); + } simpletext->setPos(QPointF(w - rightmargin - simpletext->boundingRect().width() / 2, h - bottommargin + 12)); // y axis @@ -467,15 +560,24 @@ void cChromatogramWindowWidget::redrawScene() { x = getXPositionFromScanID((int)ticchromatogram[i].mzratio, w); + printintensity = true; if (absoluteintensity) { y = ticchromatogram[i].absoluteintensity / maxintensity * (h - topmargin - bottommargin); + if (ticchromatogram[i].absoluteintensity == 0) { + printintensity = false; + } } else { y = ticchromatogram[i].relativeintensity / maxintensity * (h - topmargin - bottommargin); + if (ticchromatogram[i].relativeintensity == 0) { + printintensity = false; + } } - line = scene->addLine(x, h - bottommargin - 2, x, h - bottommargin - std::max((int)y, 2), QPen(Qt::black, 2, Qt::SolidLine)); - peakscount++; + if (printintensity) { + line = scene->addLine(x, h - bottommargin - 2, x, h - bottommargin - std::max((int)y, 2), QPen(Qt::black, 2, Qt::SolidLine)); + peakscount++; + } } @@ -492,16 +594,25 @@ void cChromatogramWindowWidget::redrawScene() { x = getXPositionFromScanID((int)eicchromatogram[i].mzratio, w); + printintensity = true; if (absoluteintensity) { y = eicchromatogram[i].absoluteintensity / maxintensity * (h - topmargin - bottommargin); + if (eicchromatogram[i].absoluteintensity == 0) { + printintensity = false; + } } else { y = eicchromatogram[i].relativeintensity / maxintensity * (h - topmargin - bottommargin); + if (eicchromatogram[i].relativeintensity == 0) { + printintensity = false; + } } - line = scene->addLine(x, h - bottommargin - 2, x, h - bottommargin - std::max((int)y, 2), QPen(Qt::red, 2, Qt::SolidLine)); - line->setZValue(1); - peakscount++; + if (printintensity) { + line = scene->addLine(x, h - bottommargin - 2, x, h - bottommargin - std::max((int)y, 2), QPen(Qt::red, 2, Qt::SolidLine)); + line->setZValue(1); + peakscount++; + } } @@ -518,21 +629,37 @@ void cChromatogramWindowWidget::redrawScene() { x = getXPositionFromScanID((int)ticchromatogram[i].mzratio, w); + printintensity = true; if (absoluteintensity) { y = ticchromatogram[i].absoluteintensity / maxintensity * (h - topmargin - bottommargin); + if (ticchromatogram[i].absoluteintensity == 0) { + printintensity = false; + } } else { y = ticchromatogram[i].relativeintensity / maxintensity * (h - topmargin - bottommargin); + if (ticchromatogram[i].relativeintensity == 0) { + printintensity = false; + } } - simpletext = scene->addSimpleText(QString::number((int)ticchromatogram[i].mzratio) + " ", myFont); - tx = x - 2; - ty = h - bottommargin - std::max((int)y, 2) - simpletext->boundingRect().height() - 1 - 4; - simpletext->setPos(tx, ty); - simpletext->setBrush(Qt::black); + if (printintensity) { + + if (retentiontime) { + simpletext = scene->addSimpleText(QString::number(rtimes[i]) + " ", myFont); + } + else { + simpletext = scene->addSimpleText(QString::number((int)ticchromatogram[i].mzratio) + " ", myFont); + } + tx = x - 2; + ty = h - bottommargin - std::max((int)y, 2) - simpletext->boundingRect().height() - 1 - 4; + simpletext->setPos(tx, ty); + simpletext->setBrush(Qt::black); + + if (scene->collidingItems(simpletext, Qt::IntersectsItemBoundingRect).size() > 0) { + scene->removeItem(simpletext); + } - if (scene->collidingItems(simpletext, Qt::IntersectsItemBoundingRect).size() > 0) { - scene->removeItem(simpletext); } } @@ -550,22 +677,38 @@ void cChromatogramWindowWidget::redrawScene() { x = getXPositionFromScanID((int)eicchromatogram[i].mzratio, w); + printintensity = true; if (absoluteintensity) { y = eicchromatogram[i].absoluteintensity / maxintensity * (h - topmargin - bottommargin); + if (eicchromatogram[i].absoluteintensity == 0) { + printintensity = false; + } } else { y = eicchromatogram[i].relativeintensity / maxintensity * (h - topmargin - bottommargin); + if (eicchromatogram[i].relativeintensity == 0) { + printintensity = false; + } } - simpletext = scene->addSimpleText(QString::number((int)eicchromatogram[i].mzratio) + " ", myFont); - tx = x - 2; - ty = h - bottommargin - std::max((int)y, 2) - simpletext->boundingRect().height() - 1 - 4; - simpletext->setPos(tx, ty); - simpletext->setBrush(Qt::red); - simpletext->setZValue(1); + if (printintensity) { + + if (retentiontime) { + simpletext = scene->addSimpleText(QString::number(rtimes[i]) + " ", myFont); + } + else { + simpletext = scene->addSimpleText(QString::number((int)eicchromatogram[i].mzratio) + " ", myFont); + } + tx = x - 2; + ty = h - bottommargin - std::max((int)y, 2) - simpletext->boundingRect().height() - 1 - 4; + simpletext->setPos(tx, ty); + simpletext->setBrush(Qt::red); + simpletext->setZValue(1); + + if (scene->collidingItems(simpletext, Qt::IntersectsItemBoundingRect).size() > 0) { + scene->removeItem(simpletext); + } - if (scene->collidingItems(simpletext, Qt::IntersectsItemBoundingRect).size() > 0) { - scene->removeItem(simpletext); } } @@ -619,12 +762,29 @@ void cChromatogramWindowWidget::updateZoomGroup() { zoomrect->setPen(QPen(Qt::black, 1, Qt::DashLine)); zoomrect->setRect(QRectF(QPointF(rx1, ry1), QPointF(rx2, ry2))); - QString qstr = "Spectrum ID: "; - qstr += QString::number(getScanIDFromXPosition((pressedx < currentx) ? pressedx : currentx, origwidth)); - qstr += "-"; - qstr += QString::number(getScanIDFromXPosition((pressedx < currentx) ? currentx : pressedx, origwidth)); - qstr += "\ndiff: "; - qstr += QString::number(getScanIDFromXPosition((pressedx < currentx) ? currentx : pressedx, origwidth) - getScanIDFromXPosition((pressedx < currentx) ? pressedx : currentx, origwidth)); + int from = getScanIDFromXPosition((pressedx < currentx) ? pressedx : currentx, origwidth); + int to = getScanIDFromXPosition((pressedx < currentx) ? currentx : pressedx, origwidth); + + QString qstr; + + if (retentiontime) { + if ((from > 0) && (from <= (int)rtimes.size()) && (to > 0) && (to <= (int)rtimes.size())) { + qstr += "Time: "; + qstr += QString::number(rtimes[from - 1]); + qstr += "-"; + qstr += QString::number(rtimes[to - 1]); + qstr += "\ndiff: "; + qstr += QString::number(rtimes[to - 1] - rtimes[from - 1]); + } + } + else { + qstr += "Spectrum ID: "; + qstr += QString::number(from); + qstr += "-"; + qstr += QString::number(to); + qstr += "\ndiff: "; + qstr += QString::number(to - from); + } zoomsimpletextitem->setFont(myFont); zoomsimpletextitem->setText(qstr); @@ -700,15 +860,48 @@ void cChromatogramWindowWidget::normalSize() { } +void cChromatogramWindowWidget::retentionTimeStateChanged(bool state) { + retentiontime = state; + redrawScene(); +} + + void cChromatogramWindowWidget::absoluteIntensityStateChanged(bool state) { absoluteintensity = state; redrawScene(); } +void cChromatogramWindowWidget::setRetentionTimeInterval(double mintime, double maxtime) { + if (rtimes.size() == 0) { + return; + } + + int minid = 0; + int maxid = 0; + + int size = (int)rtimes.size(); + for (int i = 0; i < size; i++) { + if (fabs(rtimes[i] - mintime) < fabs(rtimes[minid] - mintime)) { + minid = i; + } + if (fabs(rtimes[i] - maxtime) < fabs(rtimes[maxid] - maxtime)) { + maxid = i; + } + } + + setScanIDInterval(minid + 1, maxid + 1); +} + + +void cChromatogramWindowWidget::resetRetentionTimeInterval() { + resetScanIDInterval(); +} + + void cChromatogramWindowWidget::setScanIDInterval(int minid, int maxid) { if (maxid < minid) { - double tmp = maxid; + int tmp = maxid; maxid = minid; minid = tmp; } @@ -717,6 +910,12 @@ void cChromatogramWindowWidget::setScanIDInterval(int minid, int maxid) { maxscan = min(maxid, ticchromatogram.size()); emit updateScanIDInterval(minscan, maxscan); + if ((rtimes.size() > 0) && (rtimes.size() == ticchromatogram.size())) { + mintime = rtimes[minscan - 1]; + maxtime = rtimes[maxscan - 1]; + emit updateRetentionTimeInterval(mintime, maxtime); + } + redrawScene(); } @@ -726,6 +925,12 @@ void cChromatogramWindowWidget::resetScanIDInterval() { maxscan = max(1, ticchromatogram.size()); emit updateScanIDInterval(minscan, maxscan); + if (rtimes.size() > 0) { + mintime = rtimes[0]; + maxtime = rtimes[rtimes.size() - 1]; + emit updateRetentionTimeInterval(mintime, maxtime); + } + redrawScene(); } diff --git a/CycloBranch/gui/cChromatogramWindowWidget.h b/CycloBranch/gui/cChromatogramWindowWidget.h index 5b9917f..49b56d1 100644 --- a/CycloBranch/gui/cChromatogramWindowWidget.h +++ b/CycloBranch/gui/cChromatogramWindowWidget.h @@ -114,6 +114,13 @@ class cChromatogramWindowWidget : public QGraphicsView void mousePressEvent(QMouseEvent *event); + /** + \brief Handle the mouse double click event. + \param event pointer to QMouseEvent + */ + void mouseDoubleClickEvent(QMouseEvent *event); + + /** \brief Handle the widget show event. \param event pointer to QShowEvent @@ -133,6 +140,7 @@ class cChromatogramWindowWidget : public QGraphicsView cTheoreticalSpectrumList* theoreticalspectrumlist; cPeaksList ticchromatogram; cPeaksList eicchromatogram; + vector rtimes; QWidget* parent; QGraphicsScene* scene; @@ -154,6 +162,9 @@ class cChromatogramWindowWidget : public QGraphicsView int currentx; int currenty; + double mintime; + double maxtime; + int minscan; int maxscan; @@ -165,6 +176,7 @@ class cChromatogramWindowWidget : public QGraphicsView bool firstshow; bool enablemouseselection; + bool retentiontime; bool absoluteintensity; bool hidetic; bool hideeic; @@ -187,15 +199,28 @@ class cChromatogramWindowWidget : public QGraphicsView signals: + /** + \brief The signal is emitted when the range of retention time has been changed. + \param mintime minimum retention time + \param maxtime maximum retention time + */ + void updateRetentionTimeInterval(double mintime, double maxtime); + /** - \brief The signal is emitted when the range of scans has been changed. + \brief The signal is emitted when the range of scan numbers has been changed. \param minid minimum scan id \param maxid maximum scan id */ void updateScanIDInterval(int minid, int maxid); + /** + \brief A chromatographic peak was double clicked. + \param scanid id of a scan + */ + void chromatogramWidgetDoubleClicked(int scanid); + private slots: @@ -209,9 +234,18 @@ private slots: void normalSize(); + void retentionTimeStateChanged(bool state); + + void absoluteIntensityStateChanged(bool state); + void setRetentionTimeInterval(double mintime, double maxtime); + + + void resetRetentionTimeInterval(); + + void setScanIDInterval(int minid, int maxid); diff --git a/CycloBranch/gui/cCyclicWidget.cpp b/CycloBranch/gui/cCyclicWidget.cpp index 4c0ef4e..084570d 100644 --- a/CycloBranch/gui/cCyclicWidget.cpp +++ b/CycloBranch/gui/cCyclicWidget.cpp @@ -207,171 +207,201 @@ void paintCircle(QPainter& painter, vector& acronymsofblocks, int center void generateCyclicLabelsToRight(bool nterminal, int rotationid, int rotationstart, int fragmentstart, int fragmentend, int numberofringblocks, unordered_set& labels, cParameters* parameters, cTheoreticalSpectrum* theoreticalspectrum, int centerx, int centery, int radius, double angle, int linesize, int cornerlinesize, string visibleionseries, string visibleneutralloss, int visiblerotationid, int branchstart, int branchend) { double cumulativeangle; - string name; - int m; - int coverageindex = rotationid * (int)parameters->ionsfortheoreticalspectra.size() * (parameters->numberofgeneratedneutrallosses + 1); - bool skipiontype, skipneutralloss; + int j; - if ((visiblerotationid == -1) || ((parameters->peptidetype == cyclic) && (visiblerotationid == rotationid)) || ((parameters->peptidetype == cyclicpolyketide) && (visiblerotationid == rotationid)) || ((parameters->peptidetype == branchcyclic) && (visiblerotationid == rotationid/6))) { - - for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { + cPeaksList* thpeaks = theoreticalspectrum->getTheoreticalPeaks(); + string description; + size_t pos; + int rotid, serid; + for (int i = 0; i < thpeaks->size(); i++) { - skipiontype = false; - if ((visibleionseries.compare("") != 0) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.compare(visibleionseries) != 0)) { - skipiontype = true; - } + if (((*thpeaks)[i].matched > 0) && ((*thpeaks)[i].scrambled == false) && ((*thpeaks)[i].rotationid == rotationid)) { - for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { + description = (*thpeaks)[i].description; + description = description.substr(0, description.find(':')); - skipneutralloss = false; - if (visibleneutralloss.compare("all") != 0) { - if ((j == -1) && (visibleneutralloss.compare("none") != 0)) { - skipneutralloss = true; + if (description.find('[') == string::npos) { + if (parameters->precursorcharge > 0) { + pos = description.find("+ "); + if (pos != string::npos) { + description = description.substr(pos + 2); + } + else { + continue; + } + } + else { + pos = description.find("- "); + if (pos != string::npos) { + description = description.substr(pos + 2); } - if ((j >= 0) && (parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary.compare(visibleneutralloss) != 0)) { - skipneutralloss = true; + else { + continue; } } - if (!skipiontype && !skipneutralloss) { + if (visibleionseries.empty() || (!visibleionseries.empty() && (parameters->iondefinitions[(*thpeaks)[i].iontype].name.compare(visibleionseries) == 0))) { - if ((nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].nterminal) || (!nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].cterminal) || (parameters->peptidetype == cyclicpolyketide)) { + if ((visibleneutralloss.compare("all") == 0) + || ((visibleneutralloss.compare("none") == 0) && (description.find(" -") == string::npos)) + || ((visibleneutralloss.compare("all") != 0) && (visibleneutralloss.compare("none") != 0) && (description.substr(description.find(" -") + 2).compare(visibleneutralloss) == 0))) { - m = 0; - for (int k = fragmentstart; k < fragmentend; k++) { - if ((branchstart == -1) || (branchend == -1) || ((branchstart >= 0) && (k < branchstart)) || ((branchend >= 0) && (k >= branchend))) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[k] > 0) { - name = theoreticalspectrum->getVisualCoverage()[coverageindex].name.substr(0, theoreticalspectrum->getVisualCoverage()[coverageindex].name.rfind('_') + 1); + rotid = (*thpeaks)[i].rotationid; + if ((rotid >= 0) && ((visiblerotationid == -1) || ((parameters->peptidetype == cyclic) && (visiblerotationid == rotid)) || ((parameters->peptidetype == cyclicpolyketide) && (visiblerotationid == rotid)) || ((parameters->peptidetype == branchcyclic) && (visiblerotationid == rotid / 6)))) { - if (parameters->peptidetype == cyclicpolyketide) { - name += parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(0, 2) + to_string(k + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(2); - } - else { - name += parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name[0] + to_string(k + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(1); - } + serid = (*thpeaks)[i].seriesid; + if (serid >= 0) { + + if ((nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].nterminal) || (!nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].cterminal) || (parameters->peptidetype == cyclicpolyketide)) { - if (j >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; - } + j = 0; + for (int k = fragmentstart; k < fragmentend; k++) { + + if ((branchstart == -1) || (branchend == -1) || ((branchstart >= 0) && (k < branchstart)) || ((branchend >= 0) && (k >= branchend))) { + + if (k == serid) { + + cumulativeangle = angle * (double)((rotationstart + j + 1) % numberofringblocks) + angle / (double)2; + if (cumulativeangle < pi / 2) { + QPoint p(centerx + sin(cumulativeangle)*(radius + linesize) - sin(pi / 2 - cumulativeangle)*cornerlinesize, centery - sin(pi / 2 - cumulativeangle)*(radius + linesize) - sin(cumulativeangle)*cornerlinesize); + insertLabel(labels, p.x() + 10, p.y() - 10, description, false); + } + else if ((cumulativeangle >= pi / 2) && (cumulativeangle <= pi)) { + QPoint p(centerx + sin(pi - cumulativeangle)*(radius + linesize) + sin(cumulativeangle - pi / 2)*cornerlinesize, centery + sin(cumulativeangle - pi / 2)*(radius + linesize) - sin(pi - cumulativeangle)*cornerlinesize); + insertLabel(labels, p.x() + 10, p.y() - 10, description, false); + } + else if ((cumulativeangle >= pi) && (cumulativeangle <= 3 * pi / 2)) { + QPoint p(centerx - sin(cumulativeangle - pi)*(radius + linesize) + sin(3 * pi / 2 - cumulativeangle)*cornerlinesize, centery + sin(3 * pi / 2 - cumulativeangle)*(radius + linesize) + sin(cumulativeangle - pi)*cornerlinesize); + insertLabel(labels, p.x() - 10, p.y() - 10, description, true); + } + else { + QPoint p(centerx - sin(2 * pi - cumulativeangle)*(radius + linesize) - sin(cumulativeangle - 3 * pi / 2)*cornerlinesize, centery - sin(cumulativeangle - 3 * pi / 2)*(radius + linesize) + sin(2 * pi - cumulativeangle)*cornerlinesize); + insertLabel(labels, p.x() - 10, p.y() - 10, description, true); + } + + } + + j++; + } - cumulativeangle = angle * (double)((rotationstart + m + 1) % numberofringblocks) + angle / (double)2; - if (cumulativeangle < pi / 2) { - QPoint p3(centerx + sin(cumulativeangle)*(radius + linesize) - sin(pi / 2 - cumulativeangle)*cornerlinesize, centery - sin(pi / 2 - cumulativeangle)*(radius + linesize) - sin(cumulativeangle)*cornerlinesize); - insertLabel(labels, p3.x() + 10, p3.y() - 10, name, false); - } - else if ((cumulativeangle >= pi / 2) && (cumulativeangle <= pi)) { - QPoint p3(centerx + sin(pi - cumulativeangle)*(radius + linesize) + sin(cumulativeangle - pi / 2)*cornerlinesize, centery + sin(cumulativeangle - pi / 2)*(radius + linesize) - sin(pi - cumulativeangle)*cornerlinesize); - insertLabel(labels, p3.x() + 10, p3.y() - 10, name, false); - } - else if ((cumulativeangle >= pi) && (cumulativeangle <= 3 * pi / 2)) { - QPoint p3(centerx - sin(cumulativeangle - pi)*(radius + linesize) + sin(3 * pi / 2 - cumulativeangle)*cornerlinesize, centery + sin(3 * pi / 2 - cumulativeangle)*(radius + linesize) + sin(cumulativeangle - pi)*cornerlinesize); - insertLabel(labels, p3.x() - 10, p3.y() - 10, name, true); - } - else { - QPoint p3(centerx - sin(2 * pi - cumulativeangle)*(radius + linesize) - sin(cumulativeangle - 3 * pi / 2)*cornerlinesize, centery - sin(cumulativeangle - 3 * pi / 2)*(radius + linesize) + sin(2 * pi - cumulativeangle)*cornerlinesize); - insertLabel(labels, p3.x() - 10, p3.y() - 10, name, true); } + } - m++; + } + } } } - coverageindex++; - } } } + } void generateCyclicLabelsToLeft(bool nterminal, int rotationid, int rotationstart, int fragmentstart, int fragmentend, int numberofringblocks, unordered_set& labels, cParameters* parameters, cTheoreticalSpectrum* theoreticalspectrum, int centerx, int centery, int radius, double angle, int linesize, int cornerlinesize, string visibleionseries, string visibleneutralloss, int visiblerotationid, int branchstart, int branchend) { double cumulativeangle; - string name; - int m; - int coverageindex = rotationid * (int)parameters->ionsfortheoreticalspectra.size() * (parameters->numberofgeneratedneutrallosses + 1); - bool skipiontype, skipneutralloss; + int j; - if ((visiblerotationid == -1) || ((parameters->peptidetype == cyclic) && (visiblerotationid == rotationid)) || ((parameters->peptidetype == cyclicpolyketide) && (visiblerotationid == rotationid)) || ((parameters->peptidetype == branchcyclic) && (visiblerotationid == rotationid/6))) { + cPeaksList* thpeaks = theoreticalspectrum->getTheoreticalPeaks(); + string description; + size_t pos; + int rotid, serid; + for (int i = 0; i < thpeaks->size(); i++) { - for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { + if (((*thpeaks)[i].matched > 0) && ((*thpeaks)[i].scrambled == false) && ((*thpeaks)[i].rotationid == rotationid)) { - skipiontype = false; - if ((visibleionseries.compare("") != 0) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.compare(visibleionseries) != 0)) { - skipiontype = true; - } - - for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { + description = (*thpeaks)[i].description; + description = description.substr(0, description.find(':')); - skipneutralloss = false; - if (visibleneutralloss.compare("all") != 0) { - if ((j == -1) && (visibleneutralloss.compare("none") != 0)) { - skipneutralloss = true; + if (description.find('[') == string::npos) { + if (parameters->precursorcharge > 0) { + pos = description.find("+ "); + if (pos != string::npos) { + description = description.substr(pos + 2); } - if ((j >= 0) && (parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary.compare(visibleneutralloss) != 0)) { - skipneutralloss = true; + else { + continue; + } + } + else { + pos = description.find("- "); + if (pos != string::npos) { + description = description.substr(pos + 2); + } + else { + continue; } } - if (!skipiontype && !skipneutralloss) { + if (visibleionseries.empty() || (!visibleionseries.empty() && (parameters->iondefinitions[(*thpeaks)[i].iontype].name.compare(visibleionseries) == 0))) { - if ((nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].nterminal) || (!nterminal && parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].cterminal) || (parameters->peptidetype == cyclicpolyketide)) { + if ((visibleneutralloss.compare("all") == 0) + || ((visibleneutralloss.compare("none") == 0) && (description.find(" -") == string::npos)) + || ((visibleneutralloss.compare("all") != 0) && (visibleneutralloss.compare("none") != 0) && (description.substr(description.find(" -") + 2).compare(visibleneutralloss) == 0))) { - m = 0; - for (int k = fragmentstart; k < fragmentend; k++) { - if ((branchstart == -1) || (branchend == -1) || ((branchstart >= 0) && (k < branchstart)) || ((branchend >= 0) && (k >= branchend))) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[k] > 0) { - name = theoreticalspectrum->getVisualCoverage()[coverageindex].name.substr(0, theoreticalspectrum->getVisualCoverage()[coverageindex].name.rfind('_') + 1); + rotid = (*thpeaks)[i].rotationid; + if ((rotid >= 0) && ((visiblerotationid == -1) || ((parameters->peptidetype == cyclic) && (visiblerotationid == rotid)) || ((parameters->peptidetype == cyclicpolyketide) && (visiblerotationid == rotid)) || ((parameters->peptidetype == branchcyclic) && (visiblerotationid == rotid / 6)))) { - if (parameters->peptidetype == cyclicpolyketide) { - name += parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(0, 2) + to_string(k + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(2); - } - else { - name += parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name[0] + to_string(k + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(1); - } + serid = (*thpeaks)[i].seriesid; + if (serid >= 0) { - if (j >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; - } + if ((nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].nterminal) || (!nterminal && parameters->iondefinitions[(*thpeaks)[i].iontype].cterminal) || (parameters->peptidetype == cyclicpolyketide)) { + + j = 0; + for (int k = fragmentstart; k < fragmentend; k++) { + + if ((branchstart == -1) || (branchend == -1) || ((branchstart >= 0) && (k < branchstart)) || ((branchend >= 0) && (k >= branchend))) { + + if (k == serid) { + + cumulativeangle = angle * (double)((2 * numberofringblocks - rotationstart + numberofringblocks - j - 1) % numberofringblocks) + angle / (double)2; + if (cumulativeangle < pi / 2) { + QPoint p(centerx + sin(cumulativeangle)*(radius - linesize) + sin(pi / 2 - cumulativeangle)*cornerlinesize, centery - sin(pi / 2 - cumulativeangle)*(radius - linesize) + sin(cumulativeangle)*cornerlinesize); + insertLabel(labels, p.x() - 5, p.y() - 5, description, true); + } + else if ((cumulativeangle >= pi / 2) && (cumulativeangle <= pi)) { + QPoint p(centerx + sin(pi - cumulativeangle)*(radius - linesize) - sin(cumulativeangle - pi / 2)*cornerlinesize, centery + sin(cumulativeangle - pi / 2)*(radius - linesize) + sin(pi - cumulativeangle)*cornerlinesize); + insertLabel(labels, p.x() - 5, p.y() - 5, description, true); + } + else if ((cumulativeangle >= pi) && (cumulativeangle <= 3 * pi / 2)) { + QPoint p(centerx - sin(cumulativeangle - pi)*(radius - linesize) - sin(3 * pi / 2 - cumulativeangle)*cornerlinesize, centery + sin(3 * pi / 2 - cumulativeangle)*(radius - linesize) - sin(cumulativeangle - pi)*cornerlinesize); + insertLabel(labels, p.x() + 10, p.y() - 10, description, false); + } + else { + QPoint p(centerx - sin(2 * pi - cumulativeangle)*(radius - linesize) + sin(cumulativeangle - 3 * pi / 2)*cornerlinesize, centery - sin(cumulativeangle - 3 * pi / 2)*(radius - linesize) - sin(2 * pi - cumulativeangle)*cornerlinesize); + insertLabel(labels, p.x() + 10, p.y() - 10, description, false); + } + + } + + j++; + } - cumulativeangle = angle * (double)((2 * numberofringblocks - rotationstart + numberofringblocks - m - 1) % numberofringblocks) + angle / (double)2; - if (cumulativeangle < pi / 2) { - QPoint p4(centerx + sin(cumulativeangle)*(radius - linesize) + sin(pi / 2 - cumulativeangle)*cornerlinesize, centery - sin(pi / 2 - cumulativeangle)*(radius - linesize) + sin(cumulativeangle)*cornerlinesize); - insertLabel(labels, p4.x() - 5, p4.y() - 5, name, true); - } - else if ((cumulativeangle >= pi / 2) && (cumulativeangle <= pi)) { - QPoint p4(centerx + sin(pi - cumulativeangle)*(radius - linesize) - sin(cumulativeangle - pi / 2)*cornerlinesize, centery + sin(cumulativeangle - pi / 2)*(radius - linesize) + sin(pi - cumulativeangle)*cornerlinesize); - insertLabel(labels, p4.x() - 5, p4.y() - 5, name, true); - } - else if ((cumulativeangle >= pi) && (cumulativeangle <= 3 * pi / 2)) { - QPoint p4(centerx - sin(cumulativeangle - pi)*(radius - linesize) - sin(3 * pi / 2 - cumulativeangle)*cornerlinesize, centery + sin(3 * pi / 2 - cumulativeangle)*(radius - linesize) - sin(cumulativeangle - pi)*cornerlinesize); - insertLabel(labels, p4.x() + 10, p4.y() - 10, name, false); - } - else { - QPoint p4(centerx - sin(2 * pi - cumulativeangle)*(radius - linesize) + sin(cumulativeangle - 3 * pi / 2)*cornerlinesize, centery - sin(cumulativeangle - 3 * pi / 2)*(radius - linesize) - sin(2 * pi - cumulativeangle)*cornerlinesize); - insertLabel(labels, p4.x() + 10, p4.y() - 10, name, false); } + } - m++; + } + } } } - coverageindex++; - } } } + } @@ -522,27 +552,18 @@ void cCyclicWidget::paint(QPainter& painter) { int linesize = 20; int cornerlinesize = horizontalstep/8; - paintCircle(painter, acronyms, centerx, centery, radius, angle, horizontalstep, linesize, cornerlinesize, theoreticalspectrum->getVisualCoverage().size() > 0, visiblerotationid, labels); + paintCircle(painter, acronyms, centerx, centery, radius, angle, horizontalstep, linesize, cornerlinesize, theoreticalspectrum->getTheoreticalPeaks()->size() > 0, visiblerotationid, labels); - if (parameters && !hidelabels && (theoreticalspectrum->getVisualCoverage().size() > 0)) { + if (parameters && !hidelabels && (theoreticalspectrum->getTheoreticalPeaks()->size() > 0)) { - int half = (int)theoreticalspectrum->getVisualCoverage().size() / (int)parameters->ionsfortheoreticalspectra.size() / (parameters->numberofgeneratedneutrallosses + 1) / 2; - for (int i = 0; i < half; i++) { + for (int i = 0; i < size; i++) { generateCyclicLabelsToRight(true, i, i, 0, size - 1, size, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, -1, -1); } - for (int i = half; i < 2*half; i++) { + for (int i = size; i < 2*size; i++) { generateCyclicLabelsToLeft(true, i, i, 0, size - 1, size, labels, parameters, theoreticalspectrum, centerx, centery, radius, angle, linesize, cornerlinesize, visibleionseries, visibleneutralloss, visiblerotationid, -1, -1); } - painter.setPen(QPen(Qt::red, 2, Qt::SolidLine)); - for (auto it = labels.begin(); it != labels.end(); ++it) { - if (it->alignright) { - painter.drawText(it->x - fm.width(it->label.c_str()), it->y, fm.width(it->label.c_str()), 20, Qt::AlignLeft, it->label.c_str()); - } - else { - painter.drawText(it->x, it->y, width(), 20, Qt::AlignLeft, it->label.c_str()); - } - } + drawLabels(painter, labels, width()); } diff --git a/CycloBranch/gui/cDrawPeptideWidget.cpp b/CycloBranch/gui/cDrawPeptideWidget.cpp index 6c2b273..16f141c 100644 --- a/CycloBranch/gui/cDrawPeptideWidget.cpp +++ b/CycloBranch/gui/cDrawPeptideWidget.cpp @@ -151,7 +151,7 @@ cDrawPeptideWidget::cDrawPeptideWidget(QWidget* parent) { mainbox->addLayout(vbox); setLayout(mainbox); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); connect(sequenceline, SIGNAL(textEdited(const QString&)), this, SLOT(sequenceChanged())); connect(sequenceactioncopy, SIGNAL(triggered()), this, SLOT(sequenceCopy())); diff --git a/CycloBranch/gui/cGraphWidget.cpp b/CycloBranch/gui/cGraphWidget.cpp index d71416b..4492fb5 100644 --- a/CycloBranch/gui/cGraphWidget.cpp +++ b/CycloBranch/gui/cGraphWidget.cpp @@ -25,7 +25,7 @@ cGraphWidget::cGraphWidget() { setLayout(layout); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); } diff --git a/CycloBranch/gui/cImageWindow.cpp b/CycloBranch/gui/cImageWindow.cpp index 5f17711..19083bd 100644 --- a/CycloBranch/gui/cImageWindow.cpp +++ b/CycloBranch/gui/cImageWindow.cpp @@ -295,8 +295,10 @@ cImageWindow::cImageWindow(QWidget* parent) { layerslayout = new QGridLayout(); layerslayout->setAlignment(Qt::AlignTop); + connect(this, SIGNAL(layerChanged(int, bool, int, int)), imagewindowwidget, SLOT(changeLayer(int, bool, int, int))); connect(this, SIGNAL(activeLayerChanged(int)), imagewindowwidget, SLOT(changeActiveLayer(int))); + connect(imagewindowwidget, SIGNAL(imageWidgetDoubleClicked(int)), this, SLOT(imageDoubleClickedSlot(int))); layerscount = 0; activelayer = 0; @@ -507,7 +509,7 @@ cImageWindow::cImageWindow(QWidget* parent) { connect(imagewindowwidget, SIGNAL(updateHistologyPosition(int, int, int, int, double)), this, SLOT(updateHistologySlot(int, int, int, int, double))); connect(imagewindowwidget, SIGNAL(updateMicroscopyPosition(double, double, double, double, double)), this, SLOT(updateMicroscopySlot(double, double, double, double, double))); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); lastimagedir = "./"; @@ -1072,8 +1074,8 @@ void cImageWindow::saveImage() { } -void cImageWindow::setFilterOptionsSlot(vector coordinates, string columnname, string comparatorname, string filterstring, bool casesensitive, bool wholeword) { - imagewindowwidget->setFilterOptions(coordinates, columnname, comparatorname, filterstring, casesensitive, wholeword); +void cImageWindow::setFilterOptionsSlot(vector coordinates, bool operatortype, string columnname1, string comparatorname1, string filterstring1, string columnname2, string comparatorname2, string filterstring2, bool casesensitive, bool wholeword) { + imagewindowwidget->setFilterOptions(coordinates, operatortype, columnname1, comparatorname1, filterstring1, columnname2, comparatorname2, filterstring2, casesensitive, wholeword); } @@ -1381,3 +1383,8 @@ void cImageWindow::updateRulerSlot(double value) { rulerValue->setValue(value); } + +void cImageWindow::imageDoubleClickedSlot(int spectrumid) { + emit doubleClickedSpectrumIDSignal(spectrumid); +} + diff --git a/CycloBranch/gui/cImageWindow.h b/CycloBranch/gui/cImageWindow.h index 8cf3ba8..9846255 100644 --- a/CycloBranch/gui/cImageWindow.h +++ b/CycloBranch/gui/cImageWindow.h @@ -342,7 +342,7 @@ private slots: void saveImage(); - void setFilterOptionsSlot(vector coordinates, string columnname, string comparatorname, string filterstring, bool casesensitive, bool wholeword); + void setFilterOptionsSlot(vector coordinates, bool operatortype, string columnname1, string comparatorname1, string filterstring1, string columnname2, string comparatorname2, string filterstring2, bool casesensitive, bool wholeword); void setMaxButtonReleased(); @@ -414,6 +414,9 @@ private slots: void updateRulerSlot(double value); + void imageDoubleClickedSlot(int spectrumid); + + signals: @@ -444,6 +447,13 @@ private slots: void activeLayerChanged(int layerid); + /** + \brief The signal is emitted the image is double clicked. + \param spectrumid id of a spectrum + */ + void doubleClickedSpectrumIDSignal(int spectrumid); + + }; #endif diff --git a/CycloBranch/gui/cImageWindowWidget.cpp b/CycloBranch/gui/cImageWindowWidget.cpp index 554bc01..f6efe22 100644 --- a/CycloBranch/gui/cImageWindowWidget.cpp +++ b/CycloBranch/gui/cImageWindowWidget.cpp @@ -13,9 +13,13 @@ cImageWindowWidget::cImageWindowWidget() { setScene(scene); coordinates.clear(); - columnname = ""; - comparatorname = ""; - filteredstring = ""; + operatortype = 0; + columnname1 = ""; + comparatorname1 = ""; + filterstring1 = ""; + columnname2 = ""; + comparatorname2 = ""; + filterstring2 = ""; casesensitive = false; wholeword = false; @@ -137,11 +141,15 @@ QImage cImageWindowWidget::getImage() { } -void cImageWindowWidget::setFilterOptions(vector& coordinates, string& columnname, string& comparatorname, string& filteredstring, bool casesensitive, bool wholeword) { +void cImageWindowWidget::setFilterOptions(vector& coordinates, bool operatortype, string& columnname1, string& comparatorname1, string& filterstring1, string& columnname2, string& comparatorname2, string& filterstring2, bool casesensitive, bool wholeword) { this->coordinates = coordinates; - this->columnname = columnname; - this->comparatorname = comparatorname; - this->filteredstring = filteredstring; + this->operatortype = operatortype; + this->columnname1 = columnname1; + this->comparatorname1 = comparatorname1; + this->filterstring1 = filterstring1; + this->columnname2 = columnname2; + this->comparatorname2 = comparatorname2; + this->filterstring2 = filterstring2; this->casesensitive = casesensitive; this->wholeword = wholeword; redrawScene(); @@ -561,6 +569,56 @@ void cImageWindowWidget::mouseReleaseEvent(QMouseEvent *event) { } +void cImageWindowWidget::mouseDoubleClickEvent(QMouseEvent *event) { + QGraphicsView::mouseDoubleClickEvent(event); + int x, y, spectrumid; + + if (event->button() == Qt::LeftButton) { + QPointF p = mapToScene(event->x(), event->y()); + pressedx = (int)p.x(); + pressedy = (int)p.y(); + + currentx = pressedx; + currenty = pressedy; + + if (vendor == bruker) { + x = currentx * (maxx + 1) / max(1, currentwidth) - leftshift; + y = currenty * (maxy + 1) / max(1, currentheight) - topshift; + } + else { + x = currentx * maxx / max(1, currentwidth) - leftshift + 1; + y = currenty * maxy / max(1, currentheight) - topshift + 1; + } + + if ((currentx > 0) && (currenty > 0) && (currentx < currentwidth) && (currenty < currentheight)) { + + spectrumid = -1; + for (auto& it : coordinates) { + if ((it.x == x) && (it.y == y)) { + spectrumid = it.id; + break; + } + } + + if (spectrumid != -1) { + emit imageWidgetDoubleClicked(spectrumid - 1); + } + } + + pressedx = -1; + pressedy = -1; + + setCursor(Qt::ArrowCursor); + cursoractivity = cursoractivity_none; + + redrawScene(); + + } + + event->accept(); +} + + void cImageWindowWidget::resizeEvent(QResizeEvent *event) { QGraphicsView::resizeEvent(event); redrawScene(); @@ -598,8 +656,22 @@ void cImageWindowWidget::redrawScene() { QRectF rect_scene = mapToScene(rect_viewport).boundingRect(); QPixmap scaledpixmap = layersvector[layer_optical_image].pixmap->copy(rect_scene.x() / currentscale, rect_scene.y() / currentscale, rect_scene.width() / currentscale + 1, rect_scene.height() / currentscale + 1); + + if (scaledpixmap.isNull()) { + return; + } + + if (scaledpixmap.width() * currentscale * scaledpixmap.height() * currentscale > 100000000) { + // too many pixels + return; + } + scaledpixmap = scaledpixmap.scaledToHeight(scaledpixmap.height()*currentscale); + if (scaledpixmap.isNull()) { + return; + } + currentwidth = layersvector[layer_optical_image].pixmap->width()*currentscale; currentheight = layersvector[layer_optical_image].pixmap->height()*currentscale; @@ -678,7 +750,9 @@ void cImageWindowWidget::redrawScene() { coord.mzratio = 0; coord.relativeintensity += coordinates[i].relativeintensity; coord.absoluteintensity += coordinates[i].absoluteintensity; - coord.name += "\n" + coordinates[i].name; + if (coord.name.find(coordinates[i].name) == string::npos) { + coord.name += "\n" + coordinates[i].name; + } reduced_coordinates.erase(it); reduced_coordinates.insert(coord); @@ -861,8 +935,25 @@ void cImageWindowWidget::redrawScene() { } qstr = "Number of Points Selected: " + QString::number(reduced_coordinates.size()); - if (!filteredstring.empty()) { - qstr += " (filtered by column: \"" + QString(columnname.c_str()) + "\", comparator: \"" + QString(comparatorname.c_str()) + "\", text: \"" + QString(filteredstring.c_str()) + "\", case sensitive: " + QString((casesensitive) ? "yes" : "no") + ", whole words only: " + QString((wholeword) ? "yes" : "no") + ")"; + if (!filterstring1.empty() || !filterstring2.empty()) { + qstr += " ("; + } + if (!filterstring1.empty()) { + qstr += "column: \"" + QString(columnname1.c_str()) + "\", comparator: \"" + QString(comparatorname1.c_str()) + "\", text: \"" + QString(filterstring1.c_str()) + "\""; + } + if (!filterstring1.empty() && !filterstring2.empty()) { + if (operatortype == 0) { + qstr += " or "; + } + else { + qstr += " and "; + } + } + if (!filterstring2.empty()) { + qstr += "column: \"" + QString(columnname2.c_str()) + "\", comparator: \"" + QString(comparatorname2.c_str()) + "\", text: \"" + QString(filterstring2.c_str()) + "\""; + } + if (!filterstring1.empty() || !filterstring2.empty()) { + qstr += ", case sensitive: " + QString((casesensitive) ? "yes" : "no") + ", whole words only: " + QString((wholeword) ? "yes" : "no") + ")"; } qstr += "\n"; qstr += "Minimum Bounding Region:\nX: " + QString::number(xmin) + "-" + QString::number(xmax) + "; Y: " + QString::number(ymin) + "-" + QString::number(ymax) + "\n"; @@ -1905,7 +1996,15 @@ void cImageWindowWidget::setRulerValue(double value) { if ((horizontalshift != horizontalScrollBar()->value()) || (verticalshift != verticalScrollBar()->value())) { horizontalScrollBar()->setValue(horizontalshift); + if (horizontalshift != horizontalScrollBar()->value()) { + // if horizontalshift > maximum value, setValue was ignored + redrawScene(); + } verticalScrollBar()->setValue(verticalshift); + if (verticalshift != verticalScrollBar()->value()) { + // if verticalshift > maximum value, setValue was ignored + redrawScene(); + } } else { redrawScene(); diff --git a/CycloBranch/gui/cImageWindowWidget.h b/CycloBranch/gui/cImageWindowWidget.h index 30d7ba0..b4cfd13 100644 --- a/CycloBranch/gui/cImageWindowWidget.h +++ b/CycloBranch/gui/cImageWindowWidget.h @@ -249,13 +249,17 @@ class cImageWindowWidget : public QGraphicsView /** \brief Set options which was used to filter the points. \param coordinates a vector of coordinates - \param columnname name of column which was compared - \param comparatorname name of used comparator - \param filteredstring a string used to filter the points + \param operatortype the type of operator (0 = or; 1 = and) + \param columnname1 name of column which was compared + \param comparatorname1 name of used comparator + \param filterstring1 a string used to filter the points + \param columnname2 name of column which was compared + \param comparatorname2 name of used comparator + \param filterstring2 a string used to filter the points \param casesensitive true if the string was used as a casesensitive, false otherwise \param wholeword true if whole words only are compared, false otherwise */ - void setFilterOptions(vector& coordinates, string& columnname, string& comparatorname, string& filteredstring, bool casesensitive, bool wholeword); + void setFilterOptions(vector& coordinates, bool operatortype, string& columnname1, string& comparatorname1, string& filterstring1, string& columnname2, string& comparatorname2, string& filterstring2, bool casesensitive, bool wholeword); /** @@ -358,6 +362,13 @@ class cImageWindowWidget : public QGraphicsView void mouseReleaseEvent(QMouseEvent *event); + /** + \brief Handle the mouse double click event. + \param event pointer to QMouseEvent + */ + void mouseDoubleClickEvent(QMouseEvent *event); + + /** \brief Handle the resize event. \param event pointer to QResizeEvent @@ -417,15 +428,26 @@ class cImageWindowWidget : public QGraphicsView void updateRuler(double size); + /** + \brief The image was double clicked. + \param spectrumid id of a spectrum + */ + void imageWidgetDoubleClicked(int spectrumid); + + private: QWidget* parent; QGraphicsScene* scene; vector coordinates; - string columnname; - string comparatorname; - string filteredstring; + bool operatortype; + string columnname1; + string comparatorname1; + string filterstring1; + string columnname2; + string comparatorname2; + string filterstring2; bool casesensitive; bool wholeword; diff --git a/CycloBranch/gui/cLinearWidget.cpp b/CycloBranch/gui/cLinearWidget.cpp index 5f9ae5e..427392d 100644 --- a/CycloBranch/gui/cLinearWidget.cpp +++ b/CycloBranch/gui/cLinearWidget.cpp @@ -15,19 +15,45 @@ bool operator == (cIonLabel const& a, cIonLabel const& b) { void insertLabel(unordered_set& labels, int x, int y, string& description, bool alignright) { - cIonLabel label; - label.x = x; - label.y = y; - label.label = description; - label.alignright = alignright; - - if (labels.count(label) == 1) { - auto it = labels.find(label); - label.label = it->label + "," + label.label; + cIonLabel newlabel; + newlabel.x = x; + newlabel.y = y; + newlabel.labelset.insert(description); + newlabel.alignright = alignright; + + if (labels.count(newlabel) == 1) { + auto it = labels.find(newlabel); + newlabel.labelset = it->labelset; + newlabel.labelset.insert(description); labels.erase(it); } - labels.insert(label); + labels.insert(newlabel); +} + + +void drawLabels(QPainter& painter, unordered_set& labels, int width) { + QFont myFont("Courier", 9); + QFontMetrics fm(myFont); + string labeldesc; + + painter.setPen(QPen(Qt::red, 2, Qt::SolidLine)); + for (auto& it : labels) { + labeldesc = ""; + for (auto& it2 : it.labelset) { + labeldesc += it2 + ","; + } + if (labeldesc.size() > 0) { + labeldesc = labeldesc.substr(0, labeldesc.size() - 1); + } + labeldesc.erase(remove_if(begin(labeldesc), end(labeldesc), isWhiteSpace), end(labeldesc)); + if (it.alignright) { + painter.drawText(it.x - fm.width(labeldesc.c_str()), it.y, fm.width(labeldesc.c_str()), 20, Qt::AlignLeft, labeldesc.c_str()); + } + else { + painter.drawText(it.x, it.y, width, 20, Qt::AlignLeft, labeldesc.c_str()); + } + } } @@ -182,7 +208,7 @@ void cLinearWidget::paint(QPainter& painter) { painter.setPen(QPen(Qt::black, 2, Qt::SolidLine)); painter.drawLine(leftmargin + horizontalstep/4 + horizontalstep*i + horizontalstep/2, topmargin + 11, leftmargin + horizontalstep/4 + horizontalstep*(i + 1), topmargin + 11); - if (theoreticalspectrum->getVisualCoverage().size() > 0) { + if (theoreticalspectrum->getTheoreticalPeaks()->size() > 0) { painter.setPen(QPen(Qt::black, 2, Qt::DashLine)); painter.drawLine(leftmargin + horizontalstep*(i + 1), topmargin - 10, leftmargin + horizontalstep*(i + 1), topmargin + 30); painter.drawLine(leftmargin + horizontalstep/4 + horizontalstep/8 + horizontalstep*i + horizontalstep/2, topmargin - 10, leftmargin + horizontalstep*(i + 1), topmargin + - 10); @@ -191,85 +217,76 @@ void cLinearWidget::paint(QPainter& painter) { } } - if (parameters && !hidelabels && (theoreticalspectrum->getVisualCoverage().size() > 0)) { + if (parameters && !hidelabels && theoreticalspectrum->getTheoreticalPeaks()) { unordered_set labels; labels.clear(); - string name; - int len = (int)theoreticalspectrum->getVisualCoverage()[0].series.size(); - int coverageindex = 0; - bool skipiontype, skipneutralloss; - - for (int i = 0; i < (int)parameters->ionsfortheoreticalspectra.size(); i++) { + cPeaksList* thpeaks = theoreticalspectrum->getTheoreticalPeaks(); + string description; + size_t pos; + for (int i = 0; i < thpeaks->size(); i++) { - skipiontype = false; - if ((visibleionseries.compare("") != 0) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.compare(visibleionseries) != 0)) { - skipiontype = true; - } + if ((*thpeaks)[i].matched > 0) { - for (int j = -1; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { + description = (*thpeaks)[i].description; + description = description.substr(0, description.find(':')); - skipneutralloss = false; - if (visibleneutralloss.compare("all") != 0) { - if ((j == -1) && (visibleneutralloss.compare("none") != 0)) { - skipneutralloss = true; + if (description.find('[') == string::npos) { + if (parameters->precursorcharge > 0) { + pos = description.find("+ "); + if (pos != string::npos) { + description = description.substr(pos + 2); + } + else { + continue; + } } - if ((j >= 0) && (parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary.compare(visibleneutralloss) != 0)) { - skipneutralloss = true; + else { + pos = description.find("- "); + if (pos != string::npos) { + description = description.substr(pos + 2); + } + else { + continue; + } } - } - if (!skipiontype && !skipneutralloss) { + if (visibleionseries.empty() || (!visibleionseries.empty() && (parameters->iondefinitions[(*thpeaks)[i].iontype].name.compare(visibleionseries) == 0))) { - if (((parameters->peptidetype == linear) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].nterminal)) - || ((parameters->peptidetype == linearpolyketide) && ((parameters->ionsfortheoreticalspectra[i] == l1h_ion) || (parameters->ionsfortheoreticalspectra[i] == l2h_ion) || (parameters->ionsfortheoreticalspectra[i] == l1oh_ion) || (parameters->ionsfortheoreticalspectra[i] == l2oh_ion)))) { - for (int k = 0; k < len; k++) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[k] > 0) { - if (parameters->peptidetype == linearpolyketide) { - name = parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(0, 2) + to_string(k + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(2); - } - else { - name = parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name[0] + to_string(k + 1) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(1); - } - if (j >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; + if ((visibleneutralloss.compare("all") == 0) + || ((visibleneutralloss.compare("none") == 0) && (description.find(" -") == string::npos)) + || ((visibleneutralloss.compare("all") != 0) && (visibleneutralloss.compare("none") != 0) && (description.substr(description.find(" -") + 2).compare(visibleneutralloss) == 0))) { + + if (((parameters->peptidetype == linear) && (parameters->iondefinitions[(*thpeaks)[i].iontype].nterminal)) + || ((parameters->peptidetype == linearpolyketide) && (((*thpeaks)[i].iontype == l1h_ion) || ((*thpeaks)[i].iontype == l2h_ion) || ((*thpeaks)[i].iontype == l1oh_ion) || ((*thpeaks)[i].iontype == l2oh_ion)))) { + + if ((*thpeaks)[i].seriesid >= 0) { + insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * (*thpeaks)[i].seriesid + horizontalstep / 2, topmargin - 35, description, false); } - insertLabel(labels, leftmargin + horizontalstep / 4 + horizontalstep / 8 + horizontalstep * k + horizontalstep / 2, topmargin - 35, name, false); + } - } - } - if (((parameters->peptidetype == linear) && (parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].cterminal)) || - ((parameters->peptidetype == linearpolyketide) && ((parameters->ionsfortheoreticalspectra[i] == r1h_ion) || (parameters->ionsfortheoreticalspectra[i] == r2h_ion) || (parameters->ionsfortheoreticalspectra[i] == r1oh_ion) || (parameters->ionsfortheoreticalspectra[i] == r2oh_ion)))) { - for (int k = len - 1; k >= 0; k--) { - if (theoreticalspectrum->getVisualCoverage()[coverageindex].series[len - k - 1] > 0) { - if (parameters->peptidetype == linearpolyketide) { - name = parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(0, 2) + to_string(len - k) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(2); - } - else { - name = parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name[0] + to_string(len - k) + parameters->iondefinitions[parameters->ionsfortheoreticalspectra[i]].name.substr(1); - } - if (j >= 0) { - name += "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; + if (((parameters->peptidetype == linear) && (parameters->iondefinitions[(*thpeaks)[i].iontype].cterminal)) || + ((parameters->peptidetype == linearpolyketide) && (((*thpeaks)[i].iontype == r1h_ion) || ((*thpeaks)[i].iontype == r2h_ion) || ((*thpeaks)[i].iontype == r1oh_ion) || ((*thpeaks)[i].iontype == r2oh_ion)))) { + + if ((*thpeaks)[i].seriesid >= 0) { + insertLabel(labels, leftmargin + horizontalstep * (size - (*thpeaks)[i].seriesid - 1), topmargin + 35, description, false); } - insertLabel(labels, leftmargin + horizontalstep * (k + 1), topmargin + 35, name, false); + } + } + } } - coverageindex++; - } } - painter.setPen(QPen(Qt::red, 2, Qt::SolidLine)); - for (auto it = labels.begin(); it != labels.end(); ++it) { - painter.drawText(it->x, it->y, width(), 20, Qt::AlignLeft, it->label.c_str()); - } + drawLabels(painter, labels, width()); } diff --git a/CycloBranch/gui/cLinearWidget.h b/CycloBranch/gui/cLinearWidget.h index 0d87b9f..51f00d5 100644 --- a/CycloBranch/gui/cLinearWidget.h +++ b/CycloBranch/gui/cLinearWidget.h @@ -34,9 +34,9 @@ struct cIonLabel { /** - \brief Label of a ion. + \brief Set of labels to be merged. */ - string label; + set labelset; /** @@ -59,7 +59,7 @@ struct cIonLabel { void clear() { x = 0; y = 0; - label = ""; + labelset.clear(); alignright = false; } @@ -103,6 +103,15 @@ bool operator == (cIonLabel const& a, cIonLabel const& b); void insertLabel(unordered_set& labels, int x, int y, string& description, bool alignright); +/** + \brief Draw labels of fragment ions. + \param painter reference to a painter + \param labels unordered set of labels + \param width widget width +*/ +void drawLabels(QPainter& painter, unordered_set& labels, int width); + + /** \brief Visualization of a linear peptide. */ diff --git a/CycloBranch/gui/cMainThread.cpp b/CycloBranch/gui/cMainThread.cpp index f321350..93db270 100644 --- a/CycloBranch/gui/cMainThread.cpp +++ b/CycloBranch/gui/cMainThread.cpp @@ -87,6 +87,8 @@ void cMainThread::run() { isotopepatterncache.clear(); isotopepatterncache.unlock(); + int hrs, mins, secs; + QTime time; time.start(); @@ -94,14 +96,23 @@ void cMainThread::run() { *os << appname.toStdString() << " started at " << time.currentTime().toString().toStdString() << "." << endl << endl; + if (parameters.mode == denovoengine) { + if (parameters.peptidetype == other) { + *os << "Error: The peptide type 'other' cannot be used in this mode." << endl; + emitEndSignals(); + return; + } + } + parameters.setOutputStream(*os); if (parameters.checkAndPrepare(terminatecomputation) == -1) { emitEndSignals(); return; } + *os << parameters.printToString(); - if (parameters.mode == singlecomparison) { + if ((parameters.mode == singlecomparison) && (parameters.peptidetype != other)) { if (!checkRegex(parameters.peptidetype, parameters.searchedsequence, errormessage)) { *os << "Error: " << errormessage << endl; emitEndSignals(); @@ -109,7 +120,7 @@ void cMainThread::run() { } } - if ((parameters.mode == denovoengine) || (parameters.mode == singlecomparison) || (parameters.mode == databasesearch)) { + if ((parameters.mode == denovoengine) || ((parameters.mode == singlecomparison) && (parameters.peptidetype != other)) || ((parameters.mode == databasesearch) && (parameters.peptidetype != other))) { if (!parameters.bricksdatabase.replaceAcronymsByIDs(parameters.searchedsequence, errormessage)) { *os << "Error: " << errormessage << endl; emitEndSignals(); @@ -136,13 +147,13 @@ void cMainThread::run() { return; } - int startscanno = ((parameters.mode == dereplication) || (parameters.mode == singlecomparison)) ? 0 : parameters.scannumber - 1; - int endscanno = ((parameters.mode == dereplication) || (parameters.mode == singlecomparison)) ? parameters.peaklistseries.size() : parameters.scannumber; + int startscanno = ((parameters.mode == dereplication) || (parameters.mode == compoundsearch) || (parameters.mode == singlecomparison)) ? 0 : parameters.scannumber - 1; + int endscanno = ((parameters.mode == dereplication) || (parameters.mode == compoundsearch) || (parameters.mode == singlecomparison)) ? parameters.peaklistseries.size() : parameters.scannumber; for (int i = startscanno; i < endscanno; i++) { parameters.peaklistseries[i].sortbyMass(); if (parameters.peaklistseries[i].normalizeIntenzity() == -1) { - if ((parameters.mode == dereplication) || (parameters.mode == singlecomparison)) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch) || (parameters.mode == singlecomparison)) { *os << "Warning: the spectrum no. " << i + 1 << " is empty or the format of peaklist is incorrect." << endl; } else { @@ -159,6 +170,12 @@ void cMainThread::run() { parameters.peaklistseries[i].cropMaximumMZRatio(charge(uncharge(parameters.precursormass, parameters.precursorcharge), (parameters.precursorcharge > 0)?1:-1), parameters.precursormasserrortolerance); } + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { + if (parameters.maximummz > 0) { + parameters.peaklistseries[i].cropMaximumMZRatio(parameters.maximummz, parameters.fragmentmasserrortolerance); + } + } + parameters.peaklistseries[i].cropAbsoluteIntenzity(parameters.minimumabsoluteintensitythreshold); parameters.peaklistseries[i].cropRelativeIntenzity(parameters.minimumrelativeintensitythreshold); @@ -173,6 +190,32 @@ void cMainThread::run() { } } + if (parameters.prepareLossesAndCompounds(terminatecomputation) == -1) { + emitEndSignals(); + return; + } + + if (parameters.mode == compoundsearch) { + int compoundslimit = 5000000; + if (parameters.generateisotopepattern) { + compoundslimit = 1000000; + } + if (parameters.sequencedatabase.size() > compoundslimit) { + parameters.sequencedatabase.clear(); + *os << "Error: The number of generated compounds exceeded the limit " + to_string(compoundslimit) + ". Please, adjust the settings to limit the number of compounds." << endl; + + secs = time.elapsed() / 1000; + mins = (secs / 60) % 60; + hrs = (secs / 3600); + secs = secs % 60; + + *os << "Execution time: " << to_string(hrs) << " hrs, " << to_string(mins) << " min, " << to_string(secs) << " sec." << endl << endl; + + emitEndSignals(); + return; + } + } + if ((parameters.mode == denovoengine) || (parameters.mode == singlecomparison) || (parameters.mode == databasesearch)) { int startmodifid, endmodifid, middlemodifid; @@ -197,14 +240,28 @@ void cMainThread::run() { cCandidate c; vector netmp; - parseBranch(parameters.peptidetype, parameters.searchedsequence, v, branchstart, branchend); - // startmodifid, endmodifid and middlemodifid were filled up by checkModifications - c.setCandidate(v, netmp, fragmentIonTypeEnd, startmodifid, endmodifid, middlemodifid, branchstart, branchend); - cSummaryFormula formula = c.calculateSummaryFormula(parameters, parameters.peptidetype, parameters.precursormass); + cSummaryFormula formula; + string formstr; + if (parameters.peptidetype == other) { + v.push_back(to_string(1)); + c.setCandidate(v, netmp, fragmentIonTypeEnd, 0, 0, 0, -1, -1); + + formula.setFormula(parameters.searchedsequenceformula); + formstr = parameters.precursoradduct.empty() ? "" : "H-1"; + formula.addFormula(formstr); + formstr = parameters.precursoradduct; + formula.addFormula(formstr); + } + else { + parseBranch(parameters.peptidetype, parameters.searchedsequence, v, branchstart, branchend); + // startmodifid, endmodifid and middlemodifid were filled up by checkModifications + c.setCandidate(v, netmp, fragmentIonTypeEnd, startmodifid, endmodifid, middlemodifid, branchstart, branchend); + formula = c.calculateSummaryFormulaFromBricks(parameters, parameters.peptidetype, parameters.precursormass); + } + c.setSummaryFormula(formula); - candidates.getSet().insert(c); - + graphreaderisworking = false; } } @@ -310,68 +367,80 @@ void cMainThread::run() { errormessage = ""; // check peptide type - if (!calculatesummaries && (parameters.peptidetype != parameters.sequencedatabase[i].getPeptideType())) { - continue; + if (!calculatesummaries) { + if (parameters.peptidetype != other) { + if (parameters.peptidetype != parameters.sequencedatabase[i].getPeptideType()) { + continue; + } + } } - // check format of sequence - if (!calculatesummaries && !checkRegex(parameters.sequencedatabase[i].getPeptideType(), parameters.sequencedatabase[i].getSequence(), errormessage)) { - *os << "Ignored sequence: " << errormessage << endl; - continue; - } + if (parameters.peptidetype != other) { - // replace acronyms of bricks by ids - composition = parameters.sequencedatabase[i].getSequence(); - if (!parameters.bricksdatabase.replaceAcronymsByIDs(composition, errormessage)) { - *os << "Ignored sequence: " << errormessage << endl; - continue; - } + // check format of sequence + if (!calculatesummaries && !checkRegex(parameters.sequencedatabase[i].getPeptideType(), parameters.sequencedatabase[i].getSequence(), errormessage)) { + *os << "Ignored sequence: " << errormessage << endl; + continue; + } - // check whether modification are defined - if (!parameters.checkModifications(parameters.sequencedatabase[i], startmodifid, endmodifid, middlemodifid, errormessage)) { - *os << "Ignored sequence: " << errormessage << endl; - continue; - } + // replace acronyms of bricks by ids + composition = parameters.sequencedatabase[i].getSequence(); + if (!parameters.bricksdatabase.replaceAcronymsByIDs(composition, errormessage)) { + *os << "Ignored sequence: " << errormessage << endl; + continue; + } - // parse branch of a branched or a branch-cyclic peptide - parseBranch(parameters.sequencedatabase[i].getPeptideType(), composition, v, branchstart, branchend); + // check whether modification are defined + if (!parameters.checkModifications(parameters.sequencedatabase[i], startmodifid, endmodifid, middlemodifid, errormessage)) { + *os << "Ignored sequence: " << errormessage << endl; + continue; + } - // set candidate - c.setCandidate(v, netmp, fragmentIonTypeEnd, startmodifid, endmodifid, middlemodifid, branchstart, branchend); + // parse branch of a branched or a branch-cyclic peptide + parseBranch(parameters.sequencedatabase[i].getPeptideType(), composition, v, branchstart, branchend); - if (!calculatesummaries && ((parameters.sequencedatabase[i].getPeptideType() == linearpolyketide) || (parameters.sequencedatabase[i].getPeptideType() == cyclicpolyketide))) { + // set candidate + c.setCandidate(v, netmp, fragmentIonTypeEnd, startmodifid, endmodifid, middlemodifid, branchstart, branchend); - if (!c.checkKetideSequence(parameters.bricksdatabase, parameters.sequencedatabase[i].getPeptideType(), parameters.regularblocksorder)) { - if (parameters.sequencedatabase[i].getPeptideType() == linearpolyketide) { - *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the order of building blocks is not correct." << endl; - } - else { - *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the number or order of building blocks is not correct." << endl; + if (!calculatesummaries && ((parameters.sequencedatabase[i].getPeptideType() == linearpolyketide) || (parameters.sequencedatabase[i].getPeptideType() == cyclicpolyketide))) { + + if (!c.checkKetideSequence(parameters.bricksdatabase, parameters.sequencedatabase[i].getPeptideType(), parameters.regularblocksorder)) { + if (parameters.sequencedatabase[i].getPeptideType() == linearpolyketide) { + *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the order of building blocks is not correct." << endl; + } + else { + *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the number or order of building blocks is not correct." << endl; + } + continue; } - continue; - } - eResidueLossType leftresiduelosstype = c.getLeftResidueType(parameters.bricksdatabase); - eResidueLossType rightresiduelosstype = c.getRightResidueType(parameters.bricksdatabase); + eResidueLossType leftresiduelosstype = c.getLeftResidueType(parameters.bricksdatabase); + eResidueLossType rightresiduelosstype = c.getRightResidueType(parameters.bricksdatabase); - if (parameters.peptidetype == linearpolyketide) { - if (((leftresiduelosstype == h2_loss) && (c.getStartModifID() > 0) && parameters.searchedmodifications[c.getStartModifID()].cterminal) - || ((rightresiduelosstype == h2_loss) && (c.getEndModifID() > 0) && parameters.searchedmodifications[c.getEndModifID()].cterminal)) { - *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the C-terminal modification is attached to the N-terminus." << endl; - continue; + if (parameters.peptidetype == linearpolyketide) { + if (((leftresiduelosstype == h2_loss) && (c.getStartModifID() > 0) && parameters.searchedmodifications[c.getStartModifID()].cterminal) + || ((rightresiduelosstype == h2_loss) && (c.getEndModifID() > 0) && parameters.searchedmodifications[c.getEndModifID()].cterminal)) { + *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the C-terminal modification is attached to the N-terminus." << endl; + continue; + } } - } - else { - if (((leftresiduelosstype == h2_loss) && (c.getStartModifID() > 0) && parameters.searchedmodifications[c.getStartModifID()].cterminal) - || ((leftresiduelosstype == h2o_loss) && (c.getStartModifID() > 0) && parameters.searchedmodifications[c.getStartModifID()].nterminal) - || ((rightresiduelosstype == h2_loss) && (c.getEndModifID() > 0) && parameters.searchedmodifications[c.getEndModifID()].cterminal) - || ((rightresiduelosstype == h2o_loss) && (c.getEndModifID() > 0) && parameters.searchedmodifications[c.getEndModifID()].nterminal)) { - *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the N-terminal modification is attached to the C-terminus or vice versa." << endl; - continue; + else { + if (((leftresiduelosstype == h2_loss) && (c.getStartModifID() > 0) && parameters.searchedmodifications[c.getStartModifID()].cterminal) + || ((leftresiduelosstype == h2o_loss) && (c.getStartModifID() > 0) && parameters.searchedmodifications[c.getStartModifID()].nterminal) + || ((rightresiduelosstype == h2_loss) && (c.getEndModifID() > 0) && parameters.searchedmodifications[c.getEndModifID()].cterminal) + || ((rightresiduelosstype == h2o_loss) && (c.getEndModifID() > 0) && parameters.searchedmodifications[c.getEndModifID()].nterminal)) { + *os << "Ignored sequence: " << parameters.sequencedatabase[i].getName() << " " << parameters.sequencedatabase[i].getSequence() << "; the N-terminal modification is attached to the C-terminus or vice versa." << endl; + continue; + } } + } } + else { + v.push_back(to_string(i + 1)); + c.setCandidate(v, netmp, fragmentIonTypeEnd, 0, 0, 0, -1, -1); + } // check the precursor mass error formula.setFormula(parameters.sequencedatabase[i].getSummaryFormula()); @@ -393,8 +462,8 @@ void cMainThread::run() { c.setSummaryFormula(formula); candidates.getSet().insert(c); - if (calculatesummaries) { - *os << i + 1 << " " << c.calculateSummaryFormula(parameters, parameters.sequencedatabase[i].getPeptideType()).getSummary() << endl; + if (calculatesummaries && (parameters.peptidetype != other)) { + *os << i + 1 << " " << c.calculateSummaryFormulaFromBricks(parameters, parameters.sequencedatabase[i].getPeptideType()).getSummary() << endl; } } @@ -412,7 +481,7 @@ void cMainThread::run() { // database search - MS mode - if (parameters.mode == dereplication) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { *os << "Generating theoretical peaks... "; theoreticalspectrumlist->initialize(*os, parameters, &graph); @@ -421,10 +490,15 @@ void cMainThread::run() { ts.setParameters(¶meters); if (parameters.generateisotopepattern) { - ts.generateFineMSSpectrum(); + ts.generateFineMSSpectrum(terminatecomputation); } else { - ts.generateMSSpectrum(true); + ts.generateMSSpectrum(terminatecomputation, true); + } + + if (terminatecomputation) { + emitEndSignals(); + return; } unordered_map tempmap; @@ -442,7 +516,6 @@ void cMainThread::run() { *os << "ok" << endl; *os << "Comparing theoretical peaks with the experimental peaklist(s)... " << endl; *os << "Number of experimental peaklists: " << parameters.peaklistseries.size() << endl; - *os << "Processing the peaklist no. : " << endl; vector unmatchedpeaks; unmatchedpeaks.resize(parameters.peaklistseries.size()); @@ -456,6 +529,41 @@ void cMainThread::run() { parameters.peaklistseries[i].sortbyMass(); } + vector< vector > hintsindex; + hintsindex.resize(ts.getNumberOfPeaks()); + + bool lcms = (parameters.peaklistseries.size() > 1) && !((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)); + + if (lcms || (parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { + *os << "Analyzing spectra : " << endl; + + for (int i = 0; i < parameters.peaklistseries.size(); i++) { + if ((i + 1) % 100 == 0) { + *os << i + 1 << " "; + } + if ((i + 1) % 2500 == 0) { + *os << endl; + } + + if (terminatecomputation) { + emitEndSignals(); + return; + } + + cTheoreticalSpectrum tstmp; + tstmp.setParameters(¶meters); + tstmp.getHintsIndex(i, ts, unmatchedpeaks[i], hintsindex); + + for (auto& it : hintsindex) { + sort(it.begin(), it.end()); + } + } + + *os << " ok" << endl; + } + + *os << "Processing the peaklist no. : " << endl; + for (int i = 0; i < parameters.peaklistseries.size(); i++) { if ((i + 1) % 100 == 0) { *os << i + 1 << " "; @@ -471,7 +579,7 @@ void cMainThread::run() { cTheoreticalSpectrum tstmp; tstmp.setParameters(¶meters); - tstmp.compareMSSpectrum(i, ts, unmatchedpeaks[i]); + tstmp.compareMSSpectrum(i, ts, unmatchedpeaks[i], hintsindex); if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { parameters.peaklistseries[i].clear(); } @@ -584,7 +692,7 @@ void cMainThread::run() { } - if ((parameters.mode == denovoengine) || (parameters.mode == singlecomparison) || (parameters.mode == databasesearch)) { + if ((parameters.mode == denovoengine) || (parameters.mode == singlecomparison) || (parameters.mode == databasesearch)) { *os << "Comparing theoretical spectra of candidates with the peak list... " << endl; theoreticalspectrumlist->initialize(*os, parameters, &graph); if (theoreticalspectrumlist->parallelCompareAndStore(candidates, terminatecomputation) == -1) { @@ -594,9 +702,9 @@ void cMainThread::run() { *os << " ok" << endl; } - int secs = time.elapsed() / 1000; - int mins = (secs / 60) % 60; - int hrs = (secs / 3600); + secs = time.elapsed() / 1000; + mins = (secs / 60) % 60; + hrs = (secs / 3600); secs = secs % 60; *os << endl << appname.toStdString() << " successfully finished at " << time.currentTime().toString().toStdString(); @@ -612,7 +720,7 @@ void cMainThread::run() { void cMainThread::emitEndSignals() { emit setGraph(graph.printGraph()); - if ((parameters.mode == dereplication) || (parameters.neutrallossesfortheoreticalspectra.size() > 10000)) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch) || (parameters.neutrallossesfortheoreticalspectra.size() > 10000)) { parameters.neutrallossesdefinitions.clear(); parameters.neutrallossesfortheoreticalspectra.clear(); } diff --git a/CycloBranch/gui/cMainWindow.cpp b/CycloBranch/gui/cMainWindow.cpp index 0449c7d..715ca61 100644 --- a/CycloBranch/gui/cMainWindow.cpp +++ b/CycloBranch/gui/cMainWindow.cpp @@ -83,8 +83,8 @@ cMainWindow::cMainWindow() { actionNorine = new QAction(QIcon(":/images/icons/25.png"), tr("&Norine"), this); actionNorine->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_1)); - actionSmilesToMonomers = new QAction(QIcon(":/images/icons/5.png"), tr("Smiles2Monome&rs"), this); - actionSmilesToMonomers->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_2)); + actionBBDGNC = new QAction(QIcon(":/images/icons/5.png"), tr("Gene&rate Blocks and Sequences using BBDGNC"), this); + actionBBDGNC->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_2)); actionShowIsomers = new QAction(QIcon(":/images/icons/95.png"), tr("Show &Isomers"), this); actionShowIsomers->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_I)); @@ -129,7 +129,7 @@ cMainWindow::cMainWindow() { toolbarTools->addAction(actionImageWindow); toolbarTools->addSeparator(); toolbarTools->addAction(actionNorine); - toolbarTools->addAction(actionSmilesToMonomers); + toolbarTools->addAction(actionBBDGNC); toolbarView = addToolBar(tr("View")); toolbarView->addAction(actionShowIsomers); @@ -141,22 +141,45 @@ cMainWindow::cMainWindow() { toolbarHelp->addAction(actionPDFManual); toolbarHelp->addAction(actionAbout); - rowsfiltercombobox = new QComboBox(); - rowsfiltercombobox->setToolTip("Column to be Searched"); - rowsfiltercombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfiltercomparatorcombobox = new QComboBox(); - rowsfiltercomparatorcombobox->setToolTip("Type of Comparison"); - rowsfiltercomparatorcombobox->addItem("="); - rowsfiltercomparatorcombobox->addItem("<"); - rowsfiltercomparatorcombobox->addItem("<="); - rowsfiltercomparatorcombobox->addItem(">"); - rowsfiltercomparatorcombobox->addItem(">="); - rowsfiltercomparatorcombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfilterline = new QLineEdit(); - rowsfilterline->setMinimumWidth(300); - rowsfilterline->setToolTip("Text to Find"); + rowsfilteroperator = new QComboBox(); + rowsfilteroperator->setToolTip("OR = any condition must be met; AND = all conditions must be met."); + rowsfilteroperator->addItem("OR"); + rowsfilteroperator->addItem("AND"); + rowsfilteroperator->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercombobox1 = new QComboBox(); + rowsfiltercombobox1->setToolTip("Column to be Searched"); + rowsfiltercombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox1 = new QComboBox(); + rowsfiltercomparatorcombobox1->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox1->addItem("="); + rowsfiltercomparatorcombobox1->addItem("<"); + rowsfiltercomparatorcombobox1->addItem("<="); + rowsfiltercomparatorcombobox1->addItem(">"); + rowsfiltercomparatorcombobox1->addItem(">="); + rowsfiltercomparatorcombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline1 = new QLineEdit(); + rowsfilterline1->setMinimumWidth(150); + rowsfilterline1->setToolTip("Text to Find"); + + rowsfiltercombobox2 = new QComboBox(); + rowsfiltercombobox2->setToolTip("Column to be Searched"); + rowsfiltercombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox2 = new QComboBox(); + rowsfiltercomparatorcombobox2->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox2->addItem("="); + rowsfiltercomparatorcombobox2->addItem("<"); + rowsfiltercomparatorcombobox2->addItem("<="); + rowsfiltercomparatorcombobox2->addItem(">"); + rowsfiltercomparatorcombobox2->addItem(">="); + rowsfiltercomparatorcombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline2 = new QLineEdit(); + rowsfilterline2->setMinimumWidth(150); + rowsfilterline2->setToolTip("Text to Find"); rowsfiltercasesensitive = new QCheckBox(); rowsfiltercasesensitive->setToolTip("Case Sensitive"); @@ -174,11 +197,19 @@ cMainWindow::cMainWindow() { rowsfilterclearbutton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); rowsfilterhbox = new QHBoxLayout(); - rowsfilterhbox->addWidget(rowsfiltercombobox); + rowsfilterhbox->addWidget(rowsfiltercombobox1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilterline1); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox); + rowsfilterhbox->addWidget(rowsfilteroperator); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfilterline); + rowsfilterhbox->addWidget(rowsfiltercombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilterline2); rowsfilterhbox->addSpacing(10); rowsfilterhbox->addWidget(rowsfiltercasesensitive); rowsfilterhbox->addSpacing(10); @@ -198,7 +229,7 @@ cMainWindow::cMainWindow() { results = new QTableView(this); resultsmodel = new QStandardItemModel(0, 0, this); resultsproxymodel = new cMainWindowProxyModel(this); - resultsproxymodel->initialize(rowsfiltercombobox, rowsfiltercomparatorcombobox); + resultsproxymodel->initialize(rowsfilteroperator, rowsfiltercombobox1, rowsfiltercomparatorcombobox1, rowsfilterline1, rowsfiltercombobox2, rowsfiltercomparatorcombobox2, rowsfilterline2); logWindow = new QTextEdit(this); logWindow->setPlainText("To start the program: click \"Search -> Settings\", configure the tool and then click \"Search -> Run\"."); @@ -230,7 +261,7 @@ cMainWindow::cMainWindow() { connect(actionModifications, SIGNAL(triggered()), this, SLOT(showModifications())); connect(actionDrawPeptide, SIGNAL(triggered()), this, SLOT(showDrawPeptideWidget())); connect(actionNorine, SIGNAL(triggered()), this, SLOT(gotoNorine())); - connect(actionSmilesToMonomers, SIGNAL(triggered()), this, SLOT(gotoSmiles2Monomers())); + connect(actionBBDGNC, SIGNAL(triggered()), this, SLOT(gotoBBDGNC())); connect(actionShowIsomers, SIGNAL(triggered()), this, SLOT(showIsomersStateChanged())); connect(actionGraph, SIGNAL(triggered()), this, SLOT(showGraph())); connect(actionSummaryTableOfMatchedPeaks, SIGNAL(triggered()), this, SLOT(showSummaryTableOfMatchedPeaks())); @@ -246,10 +277,13 @@ cMainWindow::cMainWindow() { connect(summarytableofmatchedpeaks, SIGNAL(tableCancelled()), this, SLOT(summaryPeaksTableCancelled())); connect(summarytableofmatchedpeaks, SIGNAL(summaryPeaksTableRowDoubleClicked(int, double)), this, SLOT(summaryPeaksTableRowDoubleClicked(int, double))); - connect(summarytableofmatchedpeaks, SIGNAL(sendFilterOptionsToImageWindow(vector, string, string, string, bool, bool)), imagewindow, SLOT(setFilterOptionsSlot(vector, string, string, string, bool, bool))); + connect(summarytableofmatchedpeaks, SIGNAL(sendFilterOptionsToImageWindow(vector, bool, string, string, string, string, string, string, bool, bool)), imagewindow, SLOT(setFilterOptionsSlot(vector, bool, string, string, string, string, string, string, bool, bool))); connect(summarytableofmatchedpeaks, SIGNAL(sendFilterOptionsToChromatogram(cPeaksList)), chromatogramwindow, SLOT(setFilterOptionsSlot(cPeaksList))); connect(summarytableofmatchedpeaks, SIGNAL(resetRegion()), imagewindow, SLOT(clearSelection())); + connect(chromatogramwindow, SIGNAL(doubleClickedScanIDSignal(int)), this, SLOT(chromatogramDoubleClicked(int))); + connect(imagewindow, SIGNAL(doubleClickedSpectrumIDSignal(int)), this, SLOT(imageWindowDoubleClicked(int))); + menuFile->addAction(actionOpenResults); menuFile->addAction(actionSaveResults); menuFile->addSeparator(); @@ -274,7 +308,7 @@ cMainWindow::cMainWindow() { menuTools->addAction(actionImageWindow); menuTools->addSeparator(); menuTools->addAction(actionNorine); - menuTools->addAction(actionSmilesToMonomers); + menuTools->addAction(actionBBDGNC); menuView->addAction(actionShowIsomers); menuView->addSeparator(); @@ -325,7 +359,7 @@ cMainWindow::cMainWindow() { setCentralWidget(splitter); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); theoreticalspectrumlist.clear(); spectradetails.clear(); @@ -355,9 +389,13 @@ cMainWindow::cMainWindow() { cMainWindow::~cMainWindow() { deleteResults(); - delete rowsfiltercombobox; - delete rowsfiltercomparatorcombobox; - delete rowsfilterline; + delete rowsfilteroperator; + delete rowsfiltercombobox1; + delete rowsfiltercomparatorcombobox1; + delete rowsfilterline1; + delete rowsfiltercombobox2; + delete rowsfiltercomparatorcombobox2; + delete rowsfilterline2; delete rowsfiltercasesensitive; delete rowsfilterwholeword; delete rowsfilterbutton; @@ -396,7 +434,7 @@ cMainWindow::~cMainWindow() { delete actionModifications; delete actionDrawPeptide; delete actionNorine; - delete actionSmilesToMonomers; + delete actionBBDGNC; delete actionShowIsomers; delete actionGraph; delete actionSummaryTableOfMatchedPeaks; @@ -419,7 +457,7 @@ cMainWindow::~cMainWindow() { void cMainWindow::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return)) { - if (rowsfilterline->hasFocus()) { + if (rowsfilterline1->hasFocus() || rowsfilterline2->hasFocus()) { filterResults(); } else { @@ -430,7 +468,7 @@ void cMainWindow::keyPressEvent(QKeyEvent *event) { } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_F)) { - rowsfilterline->setFocus(); + rowsfilterline1->setFocus(); } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_T)) { @@ -532,33 +570,33 @@ void cMainWindow::reportSpectrum(int row, cTheoreticalSpectrum& theoreticalspect resultsmodel->setItem(row, 5 + searchspecificcolumncount, new QStandardItem()); resultsmodel->item(row, 5 + searchspecificcolumncount)->setData(QVariant::fromValue(getNumberOfBricks(theoreticalspectrum.getCandidate().getComposition())), Qt::DisplayRole); - switch (parameters.peptidetype) - { - case linear: - case linearpolyketide: - resultsmodel->setItem(row, 6 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->item(row, 6 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getStartModifID()].name.c_str()); - resultsmodel->setItem(row, 7 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->item(row, 7 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getEndModifID()].name.c_str()); - break; - case branched: - resultsmodel->setItem(row, 6 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->item(row, 6 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getStartModifID()].name.c_str()); - resultsmodel->setItem(row, 7 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->item(row, 7 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getMiddleModifID()].name.c_str()); - resultsmodel->setItem(row, 8 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->item(row, 8 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getEndModifID()].name.c_str()); - break; - case cyclic: - case cyclicpolyketide: - break; - case branchcyclic: - resultsmodel->setItem(row, 6 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->item(row, 6 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getMiddleModifID()].name.c_str()); - break; - case other: - default: - break; + switch (parameters.peptidetype) { + case linear: + case linearpolyketide: + resultsmodel->setItem(row, 6 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->item(row, 6 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getStartModifID()].name.c_str()); + resultsmodel->setItem(row, 7 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->item(row, 7 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getEndModifID()].name.c_str()); + break; + case branched: + resultsmodel->setItem(row, 6 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->item(row, 6 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getStartModifID()].name.c_str()); + resultsmodel->setItem(row, 7 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->item(row, 7 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getMiddleModifID()].name.c_str()); + resultsmodel->setItem(row, 8 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->item(row, 8 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getEndModifID()].name.c_str()); + break; + case cyclic: + case cyclicpolyketide: + break; + case branchcyclic: + resultsmodel->setItem(row, 6 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->item(row, 6 + searchspecificcolumncount)->setText(parameters.searchedmodifications[theoreticalspectrum.getCandidate().getMiddleModifID()].name.c_str()); + break; + case other: + break; + default: + break; } resultsmodel->setItem(row, 6 + searchspecificcolumncount + resultsspecificcolumncount, new QStandardItem()); @@ -595,25 +633,38 @@ void cMainWindow::reportSpectrum(int row, cTheoreticalSpectrum& theoreticalspect } - if (parameters.mode == dereplication) { - resultsmodel->setItem(row, 2, new QStandardItem()); - resultsmodel->item(row, 2)->setText(theoreticalspectrum.getExperimentalSpectrum().getTitle().c_str()); + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { + int mscol = 2; + + if ((parameters.peaklistfileformat != mis) && (parameters.peaklistfileformat != imzML)) { + resultsmodel->setItem(row, mscol, new QStandardItem()); + resultsmodel->item(row, mscol)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(theoreticalspectrum.getExperimentalSpectrum().getRetentionTime())), Qt::DisplayRole); + mscol++; + } + + resultsmodel->setItem(row, mscol, new QStandardItem()); + resultsmodel->item(row, mscol)->setText(theoreticalspectrum.getExperimentalSpectrum().getTitle().c_str()); + mscol++; - resultsmodel->setItem(row, 3, new QStandardItem()); - resultsmodel->item(row, 3)->setData(QVariant::fromValue(theoreticalspectrum.getNumberOfMatchedPeaks()), Qt::DisplayRole); + resultsmodel->setItem(row, mscol, new QStandardItem()); + resultsmodel->item(row, mscol)->setData(QVariant::fromValue(theoreticalspectrum.getNumberOfMatchedPeaks()), Qt::DisplayRole); + mscol++; - resultsmodel->setItem(row, 4, new QStandardItem()); - resultsmodel->item(row, 4)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(theoreticalspectrum.getRatioOfMatchedPeaks()*100)), Qt::DisplayRole); + resultsmodel->setItem(row, mscol, new QStandardItem()); + resultsmodel->item(row, mscol)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(theoreticalspectrum.getRatioOfMatchedPeaks()*100)), Qt::DisplayRole); + mscol++; - resultsmodel->setItem(row, 5, new QStandardItem()); - resultsmodel->item(row, 5)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(theoreticalspectrum.getSumOfRelativeIntensities())), Qt::DisplayRole); + resultsmodel->setItem(row, mscol, new QStandardItem()); + resultsmodel->item(row, mscol)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(theoreticalspectrum.getSumOfRelativeIntensities())), Qt::DisplayRole); + mscol++; if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { - resultsmodel->setItem(row, 6, new QStandardItem()); - resultsmodel->item(row, 6)->setData(QVariant::fromValue(theoreticalspectrum.getExperimentalSpectrum().getCoordinateX()), Qt::DisplayRole); + resultsmodel->setItem(row, mscol, new QStandardItem()); + resultsmodel->item(row, mscol)->setData(QVariant::fromValue(theoreticalspectrum.getExperimentalSpectrum().getCoordinateX()), Qt::DisplayRole); + mscol++; - resultsmodel->setItem(row, 7, new QStandardItem()); - resultsmodel->item(row, 7)->setData(QVariant::fromValue(theoreticalspectrum.getExperimentalSpectrum().getCoordinateY()), Qt::DisplayRole); + resultsmodel->setItem(row, mscol, new QStandardItem()); + resultsmodel->item(row, mscol)->setData(QVariant::fromValue(theoreticalspectrum.getExperimentalSpectrum().getCoordinateY()), Qt::DisplayRole); } } @@ -728,6 +779,7 @@ void cMainWindow::showImageWindow() { void cMainWindow::showChromatogramWindow() { if (prepareSummaryTableOfMatchedPeaks()) { + chromatogramwindow->recalculateTICChromatogram(); chromatogramwindow->show(); chromatogramwindow->activateWindow(); if (chromatogramwindow->isMinimized()) { @@ -807,6 +859,7 @@ void cMainWindow::run() { } } + /* rx = "\\.[mM][zZ][mM][lL]$"; if (regex_search(localparameters.peaklistfilename, rx)) { string convertedmzml = localparameters.peaklistfilename.substr(0, (int)localparameters.peaklistfilename.size() - 5); @@ -827,6 +880,7 @@ void cMainWindow::run() { } } } + */ #if OS_TYPE == WIN if (localparameters.useprofiledata) { @@ -926,7 +980,7 @@ void cMainWindow::enableButtonsHandlingResults(bool enable) { actionSummaryTableOfMatchedPeaks->setEnabled(enable); if (enable) { - if (parameters.mode == dereplication) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { actionShowIsomers->setEnabled(false); if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { actionImageWindow->setEnabled(true); @@ -962,25 +1016,26 @@ void cMainWindow::reportSpectra() { return; } - switch (parameters.peptidetype) - { - case linear: - case linearpolyketide: - resultsspecificcolumncount = 2; - break; - case branched: - resultsspecificcolumncount = 3; - break; - case cyclic: - case cyclicpolyketide: - resultsspecificcolumncount = 0; - break; - case branchcyclic: - resultsspecificcolumncount = 1; - break; - case other: - default: - break; + switch (parameters.peptidetype) { + case linear: + case linearpolyketide: + resultsspecificcolumncount = 2; + break; + case branched: + resultsspecificcolumncount = 3; + break; + case cyclic: + case cyclicpolyketide: + resultsspecificcolumncount = 0; + break; + case branchcyclic: + resultsspecificcolumncount = 1; + break; + case other: + resultsspecificcolumncount = 0; + break; + default: + break; } @@ -1047,51 +1102,51 @@ void cMainWindow::reportSpectra() { resultsmodel->horizontalHeaderItem(5 + searchspecificcolumncount)->setText("Number of Bricks"); results->setItemDelegateForColumn(5 + searchspecificcolumncount, new QItemDelegate()); - switch (parameters.peptidetype) - { - case linear: - resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("N-terminal Modification"); - results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); - - resultsmodel->setHorizontalHeaderItem(7 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(7 + searchspecificcolumncount)->setText("C-terminal Modification"); - results->setItemDelegateForColumn(7 + searchspecificcolumncount, new QItemDelegate()); - break; - case branched: - resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("N-terminal Modification"); - results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); - - resultsmodel->setHorizontalHeaderItem(7 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(7 + searchspecificcolumncount)->setText("Branch Modification"); - results->setItemDelegateForColumn(7 + searchspecificcolumncount, new QItemDelegate()); + switch (parameters.peptidetype) { + case linear: + resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("N-terminal Modification"); + results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); - resultsmodel->setHorizontalHeaderItem(8 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(8 + searchspecificcolumncount)->setText("C-terminal Modification"); - results->setItemDelegateForColumn(8 + searchspecificcolumncount, new QItemDelegate()); - break; - case cyclic: - case cyclicpolyketide: - break; - case branchcyclic: - resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("Branch Modification"); - results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); - break; - case linearpolyketide: - resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("Left Terminal Modification"); - results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); + resultsmodel->setHorizontalHeaderItem(7 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(7 + searchspecificcolumncount)->setText("C-terminal Modification"); + results->setItemDelegateForColumn(7 + searchspecificcolumncount, new QItemDelegate()); + break; + case branched: + resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("N-terminal Modification"); + results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); + + resultsmodel->setHorizontalHeaderItem(7 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(7 + searchspecificcolumncount)->setText("Branch Modification"); + results->setItemDelegateForColumn(7 + searchspecificcolumncount, new QItemDelegate()); + + resultsmodel->setHorizontalHeaderItem(8 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(8 + searchspecificcolumncount)->setText("C-terminal Modification"); + results->setItemDelegateForColumn(8 + searchspecificcolumncount, new QItemDelegate()); + break; + case cyclic: + case cyclicpolyketide: + break; + case branchcyclic: + resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("Branch Modification"); + results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); + break; + case linearpolyketide: + resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(6 + searchspecificcolumncount)->setText("Left Terminal Modification"); + results->setItemDelegateForColumn(6 + searchspecificcolumncount, new QItemDelegate()); - resultsmodel->setHorizontalHeaderItem(7 + searchspecificcolumncount, new QStandardItem()); - resultsmodel->horizontalHeaderItem(7 + searchspecificcolumncount)->setText("Right Terminal Modification"); - results->setItemDelegateForColumn(7 + searchspecificcolumncount, new QItemDelegate()); + resultsmodel->setHorizontalHeaderItem(7 + searchspecificcolumncount, new QStandardItem()); + resultsmodel->horizontalHeaderItem(7 + searchspecificcolumncount)->setText("Right Terminal Modification"); + results->setItemDelegateForColumn(7 + searchspecificcolumncount, new QItemDelegate()); - break; - case other: - default: - break; + break; + case other: + break; + default: + break; } resultsmodel->setHorizontalHeaderItem(6 + searchspecificcolumncount + resultsspecificcolumncount, new QStandardItem()); @@ -1131,52 +1186,70 @@ void cMainWindow::reportSpectra() { } - if (parameters.mode == dereplication) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { resultsmodel->setColumnCount(8); } else { - resultsmodel->setColumnCount(6); + resultsmodel->setColumnCount(7); } - resultsmodel->setHorizontalHeaderItem(0, new QStandardItem()); - resultsmodel->horizontalHeaderItem(0)->setText("*"); - results->setItemDelegateForColumn(0, new QItemDelegate()); + int mscol = 0; - resultsmodel->setHorizontalHeaderItem(1, new QStandardItem()); - resultsmodel->horizontalHeaderItem(1)->setText("Spectrum ID"); - results->setItemDelegateForColumn(1, new QItemDelegate()); + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("*"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; - resultsmodel->setHorizontalHeaderItem(2, new QStandardItem()); - resultsmodel->horizontalHeaderItem(2)->setText("Title"); - results->setItemDelegateForColumn(2, new QItemDelegate()); + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Spectrum ID"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; - resultsmodel->setHorizontalHeaderItem(3, new QStandardItem()); - resultsmodel->horizontalHeaderItem(3)->setText("Matched Peaks"); - results->setItemDelegateForColumn(3, new QItemDelegate()); + if ((parameters.peaklistfileformat != mis) && (parameters.peaklistfileformat != imzML)) { + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Time"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; + } - resultsmodel->setHorizontalHeaderItem(4, new QStandardItem()); - resultsmodel->horizontalHeaderItem(4)->setText("Ratio of Matched Peaks [%]"); - results->setItemDelegateForColumn(4, new QItemDelegate()); + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Title"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; - resultsmodel->setHorizontalHeaderItem(5, new QStandardItem()); - resultsmodel->horizontalHeaderItem(5)->setText("Sum of Relative Intensities"); - results->setItemDelegateForColumn(5, new QItemDelegate()); + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Matched Peaks"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; - if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { - resultsmodel->setHorizontalHeaderItem(6, new QStandardItem()); - resultsmodel->horizontalHeaderItem(6)->setText("Coordinate X"); - results->setItemDelegateForColumn(6, new QItemDelegate()); + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Ratio of Matched Peaks [%]"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; + + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Sum of Relative Intensities"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; - resultsmodel->setHorizontalHeaderItem(7, new QStandardItem()); - resultsmodel->horizontalHeaderItem(7)->setText("Coordinate Y"); - results->setItemDelegateForColumn(7, new QItemDelegate()); + if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Coordinate X"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); + mscol++; + + resultsmodel->setHorizontalHeaderItem(mscol, new QStandardItem()); + resultsmodel->horizontalHeaderItem(mscol)->setText("Coordinate Y"); + results->setItemDelegateForColumn(mscol, new QItemDelegate()); } } - rowsfiltercombobox->clear(); + rowsfiltercombobox1->clear(); + rowsfiltercombobox2->clear(); for (int i = 0; i < resultsmodel->columnCount(); i++) { - rowsfiltercombobox->addItem(resultsmodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox1->addItem(resultsmodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox2->addItem(resultsmodel->horizontalHeaderItem(i)->text()); } results->resizeColumnsToContents(); @@ -1187,7 +1260,15 @@ void cMainWindow::reportSpectra() { rawdata.resize(theoreticalspectrumlist.size()); } - if ((parameters.peaklistfileformat == imzML) && (parameters.mode == dereplication)) { + if (parameters.peaklistfileformat == dat) { + rawdata.resize(theoreticalspectrumlist.size()); + } + + if ((parameters.peaklistfileformat == mzML) || (parameters.peaklistfileformat == raw)) { + rawdata.resize(theoreticalspectrumlist.size()); + } + + if ((parameters.peaklistfileformat == imzML) && ((parameters.mode == dereplication) || (parameters.mode == compoundsearch))) { rawdata.resize(theoreticalspectrumlist.size()); imzmlprofilemetadata.clear(); profilemz64precision = false; @@ -1428,7 +1509,7 @@ void cMainWindow::exportToHTML() { out << "\n"; out << "\n"; - out << "

" << QString(title.c_str()) << "

\n"; + out << "

" << QString(title.c_str()) << "

\n"; if (htmlexportdialog->checkboxparameters->isChecked()) { out << "

Parameters

\n"; @@ -1495,7 +1576,7 @@ void cMainWindow::exportToHTML() { int columncount; string tdwidth; - if (parameters.mode == dereplication) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { if (parameters.generateisotopepattern) { columncount = 15; @@ -1506,10 +1587,10 @@ void cMainWindow::exportToHTML() { } else { if (parameters.generateisotopepattern) { - columncount = 13; + columncount = 14; } else { - columncount = 10; + columncount = 11; } } } @@ -1534,11 +1615,14 @@ void cMainWindow::exportToHTML() { out << "ID"; - if (parameters.mode == dereplication) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { out << "Coordinate X"; out << "Coordinate Y"; } + else { + out << "Time"; + } if (parameters.generateisotopepattern) { out << "Pattern Type"; } @@ -1551,7 +1635,7 @@ void cMainWindow::exportToHTML() { out << "Group ID"; } - if (parameters.mode != dereplication) { + if ((parameters.mode == denovoengine) || (parameters.mode == singlecomparison) || (parameters.mode == databasesearch)) { out << "Fragment Type"; } @@ -1566,7 +1650,7 @@ void cMainWindow::exportToHTML() { out << "Absolute Intensity"; out << "Error [ppm]"; - if (parameters.mode == dereplication) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { if (parameters.generateisotopepattern) { out << "Score"; out << "FDR"; @@ -1825,7 +1909,7 @@ void cMainWindow::openResultsFile() { parameters.load(infile); parameterswidget->setAndRestoreParameters(parameters); - if (parameters.mode == dereplication) { + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { actionShowIsomers->setEnabled(false); if ((parameters.peaklistfileformat == mis) || (parameters.peaklistfileformat == imzML)) { actionImageWindow->setEnabled(true); @@ -1910,7 +1994,7 @@ void cMainWindow::filterResults() { resultsproxymodel->setWholeWord(rowsfilterwholeword->isChecked()); resultsproxymodel->setFilterKeyColumn(-1); resultsproxymodel->setFilterCaseSensitivity(rowsfiltercasesensitive->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive); - resultsproxymodel->setFilterFixedString(rowsfilterline->text()); + resultsproxymodel->setFilterFixedString(""); if (!summarytableofmatchedpeaks->isHidden() || !imagewindow->isHidden() || !chromatogramwindow->isHidden()) { summarytableofmatchedpeaks->deleteTable(); @@ -1926,7 +2010,8 @@ void cMainWindow::filterResults() { void cMainWindow::resetFilter() { - rowsfilterline->setText(""); + rowsfilterline1->setText(""); + rowsfilterline2->setText(""); results->horizontalHeader()->setSortIndicator(-1, Qt::AscendingOrder); resultsproxymodel->sort(-1); @@ -1949,12 +2034,12 @@ void cMainWindow::resetFilter() { void cMainWindow::gotoNorine() { - QDesktopServices::openUrl(QUrl("http://bioinfo.lifl.fr/norine/")); + QDesktopServices::openUrl(QUrl("https://bioinfo.lifl.fr/norine/")); } -void cMainWindow::gotoSmiles2Monomers() { - QDesktopServices::openUrl(QUrl("http://bioinfo.lifl.fr/norine/smiles2monomers.jsp")); +void cMainWindow::gotoBBDGNC() { + QDesktopServices::openUrl(QUrl("https://ms.biomed.cas.cz/bbdgnc/")); } @@ -1979,6 +2064,30 @@ void cMainWindow::updateSummaryPeaksTableFilterSlot(int xmin, int xmax, int ymin } +void cMainWindow::chromatogramDoubleClicked(int scanid) { + if ((scanid >= 0) && (scanid < spectradetails.size())) { + spectradetails[scanid].prepareToShow(actionShowIsomers, &rawdata, &imzmlprofilemetadata, profilemz64precision, profileintensity64precision); + spectradetails[scanid].show(); + spectradetails[scanid].activateWindow(); + if (spectradetails[scanid].isMinimized()) { + spectradetails[scanid].showNormal(); + } + } +} + + +void cMainWindow::imageWindowDoubleClicked(int spectrumid) { + if ((spectrumid >= 0) && (spectrumid < spectradetails.size())) { + spectradetails[spectrumid].prepareToShow(actionShowIsomers, &rawdata, &imzmlprofilemetadata, profilemz64precision, profileintensity64precision); + spectradetails[spectrumid].show(); + spectradetails[spectrumid].activateWindow(); + if (spectradetails[spectrumid].isMinimized()) { + spectradetails[spectrumid].showNormal(); + } + } +} + + /* void cMainWindow::showContextMenu(const QPoint &pt) { QMenu *menu = logWindow->createStandardContextMenu(); diff --git a/CycloBranch/gui/cMainWindow.h b/CycloBranch/gui/cMainWindow.h index 8a71f06..756e0a6 100644 --- a/CycloBranch/gui/cMainWindow.h +++ b/CycloBranch/gui/cMainWindow.h @@ -102,7 +102,7 @@ class cMainWindow : public QMainWindow QAction* actionModifications; QAction *actionDrawPeptide; QAction *actionNorine; - QAction *actionSmilesToMonomers; + QAction *actionBBDGNC; QAction* actionShowIsomers; QAction* actionGraph; QAction* actionSummaryTableOfMatchedPeaks; @@ -115,9 +115,13 @@ class cMainWindow : public QMainWindow QWidget* rowsfilterwidget; QHBoxLayout* rowsfilterhbox; - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; - QLineEdit* rowsfilterline; + QComboBox* rowsfilteroperator; + QComboBox* rowsfiltercombobox1; + QComboBox* rowsfiltercomparatorcombobox1; + QLineEdit* rowsfilterline1; + QComboBox* rowsfiltercombobox2; + QComboBox* rowsfiltercomparatorcombobox2; + QLineEdit* rowsfilterline2; QCheckBox* rowsfiltercasesensitive; QCheckBox* rowsfilterwholeword; QPushButton* rowsfilterbutton; @@ -250,7 +254,7 @@ private slots: void gotoNorine(); - void gotoSmiles2Monomers(); + void gotoBBDGNC(); void summaryPeaksTableCancelled(); @@ -258,6 +262,10 @@ private slots: void updateSummaryPeaksTableFilterSlot(int xmin, int xmax, int ymin, int ymax); + void chromatogramDoubleClicked(int scanid); + + void imageWindowDoubleClicked(int spectrumid); + //void showContextMenu(const QPoint &pt); signals: diff --git a/CycloBranch/gui/cMainWindowProxyModel.cpp b/CycloBranch/gui/cMainWindowProxyModel.cpp index c251917..8829b38 100644 --- a/CycloBranch/gui/cMainWindowProxyModel.cpp +++ b/CycloBranch/gui/cMainWindowProxyModel.cpp @@ -6,9 +6,14 @@ cMainWindowProxyModel::cMainWindowProxyModel(QObject *parent) : QSortFilterProxy } -void cMainWindowProxyModel::initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox) { - this->rowsfiltercombobox = rowsfiltercombobox; - this->rowsfiltercomparatorcombobox = rowsfiltercomparatorcombobox; +void cMainWindowProxyModel::initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2) { + filteroperator = rowsfilteroperator; + filtercombobox1 = rowsfiltercombobox1; + filtercomparatorcombobox1 = rowsfiltercomparatorcombobox1; + filterline1 = rowsfilterline1; + filtercombobox2 = rowsfiltercombobox2; + filtercomparatorcombobox2 = rowsfiltercomparatorcombobox2; + filterline2 = rowsfilterline2; } @@ -18,116 +23,59 @@ void cMainWindowProxyModel::setWholeWord(bool wholeword) { bool cMainWindowProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { - if (filterRegExp().isEmpty()) { + if (filterline1->text().isEmpty() && filterline2->text().isEmpty()) { return true; } - int col = rowsfiltercombobox->currentIndex(); - - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::ByteArray) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() == filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() < filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() <= filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() > filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() >= filterRegExp().pattern().toDouble()) { - return true; - } - break; - default: - break; + int col1 = filtercombobox1->currentIndex(); + int col2 = filtercombobox2->currentIndex(); + + bool result1 = false; + bool result2 = false; + + if (!filterline1->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::ByteArray) { + result1 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).toString(); + result1 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, qstr, filterline1->text(), sourceParent, wholeword, filterCaseSensitivity()); } - } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::String) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (wholeword) { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) == 0) { - return true; - } - } - else { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().contains(filterRegExp())) { - return true; - } - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) < 0) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) <= 0) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) > 0) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) >= 0) { - return true; - } - break; - default: - break; + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::Int) { + result1 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); } } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::Int) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() == filterRegExp().pattern().toInt()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() < filterRegExp().pattern().toInt()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() <= filterRegExp().pattern().toInt()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() > filterRegExp().pattern().toInt()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() >= filterRegExp().pattern().toInt()) { - return true; - } - break; - default: - break; + if (!filterline2->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::ByteArray) { + result2 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).toString(); + result2 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, qstr, filterline2->text(), sourceParent, wholeword, filterCaseSensitivity()); } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::Int) { + result2 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + } + + if (!filterline1->text().isEmpty() && filterline2->text().isEmpty()) { + return result1; + } + + if (filterline1->text().isEmpty() && !filterline2->text().isEmpty()) { + return result2; + } + + if (filteroperator->currentIndex() == 0) { + return result1 || result2; } - return false; + return result1 && result2; } diff --git a/CycloBranch/gui/cMainWindowProxyModel.h b/CycloBranch/gui/cMainWindowProxyModel.h index 9546fa7..1ab5c65 100644 --- a/CycloBranch/gui/cMainWindowProxyModel.h +++ b/CycloBranch/gui/cMainWindowProxyModel.h @@ -9,8 +9,10 @@ #include #include -#include #include +#include +#include +#include "core/utilities.h" /** @@ -22,8 +24,13 @@ class cMainWindowProxyModel : public QSortFilterProxyModel { private: - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; + QComboBox* filteroperator; + QComboBox* filtercombobox1; + QComboBox* filtercomparatorcombobox1; + QLineEdit* filterline1; + QComboBox* filtercombobox2; + QComboBox* filtercomparatorcombobox2; + QLineEdit* filterline2; bool wholeword; public: @@ -38,10 +45,15 @@ class cMainWindowProxyModel : public QSortFilterProxyModel { /** \brief Initialize the model. - \param rowsfiltercombobox reference to the combobox with selection of columns - \param rowsfiltercomparatorcombobox reference to the combobox with selection of comparator + \param rowsfilteroperator reference to the combobox with operator selection + \param rowsfiltercombobox1 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox1 reference to the combobox with selection of comparator + \param rowsfilterline1 reference to a text field + \param rowsfiltercombobox2 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox2 reference to the combobox with selection of comparator + \param rowsfilterline2 reference to a text field */ - void initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox); + void initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2); /** diff --git a/CycloBranch/gui/cModificationsProxyModel.cpp b/CycloBranch/gui/cModificationsProxyModel.cpp index 2fe0239..a6d0566 100644 --- a/CycloBranch/gui/cModificationsProxyModel.cpp +++ b/CycloBranch/gui/cModificationsProxyModel.cpp @@ -6,9 +6,14 @@ cModificationsProxyModel::cModificationsProxyModel(QObject *parent) : QSortFilte } -void cModificationsProxyModel::initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox) { - this->rowsfiltercombobox = rowsfiltercombobox; - this->rowsfiltercomparatorcombobox = rowsfiltercomparatorcombobox; +void cModificationsProxyModel::initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2) { + filteroperator = rowsfilteroperator; + filtercombobox1 = rowsfiltercombobox1; + filtercomparatorcombobox1 = rowsfiltercomparatorcombobox1; + filterline1 = rowsfilterline1; + filtercombobox2 = rowsfiltercombobox2; + filtercomparatorcombobox2 = rowsfiltercomparatorcombobox2; + filterline2 = rowsfilterline2; } @@ -18,116 +23,59 @@ void cModificationsProxyModel::setWholeWord(bool wholeword) { bool cModificationsProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { - if (filterRegExp().isEmpty()) { + if (filterline1->text().isEmpty() && filterline2->text().isEmpty()) { return true; } - int col = rowsfiltercombobox->currentIndex() + 1; - - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::ByteArray) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() == filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() < filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() <= filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() > filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() >= filterRegExp().pattern().toDouble()) { - return true; - } - break; - default: - break; + int col1 = filtercombobox1->currentIndex() + 1; + int col2 = filtercombobox2->currentIndex() + 1; + + bool result1 = false; + bool result2 = false; + + if (!filterline1->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::ByteArray) { + result1 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).toString(); + result1 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, qstr, filterline1->text(), sourceParent, wholeword, filterCaseSensitivity()); } - } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::String) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (wholeword) { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) == 0) { - return true; - } - } - else { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().contains(filterRegExp())) { - return true; - } - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) < 0) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) <= 0) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) > 0) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) >= 0) { - return true; - } - break; - default: - break; + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::Int) { + result1 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); } } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::Int) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() == filterRegExp().pattern().toInt()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() < filterRegExp().pattern().toInt()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() <= filterRegExp().pattern().toInt()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() > filterRegExp().pattern().toInt()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() >= filterRegExp().pattern().toInt()) { - return true; - } - break; - default: - break; + if (!filterline2->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::ByteArray) { + result2 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).toString(); + result2 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, qstr, filterline2->text(), sourceParent, wholeword, filterCaseSensitivity()); } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::Int) { + result2 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + } + + if (!filterline1->text().isEmpty() && filterline2->text().isEmpty()) { + return result1; + } + + if (filterline1->text().isEmpty() && !filterline2->text().isEmpty()) { + return result2; + } + + if (filteroperator->currentIndex() == 0) { + return result1 || result2; } - return false; + return result1 && result2; } diff --git a/CycloBranch/gui/cModificationsProxyModel.h b/CycloBranch/gui/cModificationsProxyModel.h index 787a19a..b5d22a7 100644 --- a/CycloBranch/gui/cModificationsProxyModel.h +++ b/CycloBranch/gui/cModificationsProxyModel.h @@ -11,7 +11,8 @@ #include #include #include -#include "core/cFragmentIons.h" +#include +#include "core/utilities.h" /** @@ -23,8 +24,13 @@ class cModificationsProxyModel : public QSortFilterProxyModel { private: - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; + QComboBox* filteroperator; + QComboBox* filtercombobox1; + QComboBox* filtercomparatorcombobox1; + QLineEdit* filterline1; + QComboBox* filtercombobox2; + QComboBox* filtercomparatorcombobox2; + QLineEdit* filterline2; bool wholeword; public: @@ -39,10 +45,15 @@ class cModificationsProxyModel : public QSortFilterProxyModel { /** \brief Initialize the model. - \param rowsfiltercombobox reference to the combobox with selection of columns - \param rowsfiltercomparatorcombobox reference to the combobox with selection of comparator + \param rowsfilteroperator reference to the combobox with operator selection + \param rowsfiltercombobox1 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox1 reference to the combobox with selection of comparator + \param rowsfilterline1 reference to a text field + \param rowsfiltercombobox2 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox2 reference to the combobox with selection of comparator + \param rowsfilterline2 reference to a text field */ - void initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox); + void initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2); /** diff --git a/CycloBranch/gui/cModificationsWidget.cpp b/CycloBranch/gui/cModificationsWidget.cpp index 7c2e6a8..e191fa3 100644 --- a/CycloBranch/gui/cModificationsWidget.cpp +++ b/CycloBranch/gui/cModificationsWidget.cpp @@ -30,22 +30,45 @@ cModificationsWidget::cModificationsWidget(QWidget* parent) { menuEdit = new QMenu(tr("&Edit"), this); menuHelp = new QMenu(tr("&Help"), this); - rowsfiltercombobox = new QComboBox(); - rowsfiltercombobox->setToolTip("Column to be Searched"); - rowsfiltercombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfiltercomparatorcombobox = new QComboBox(); - rowsfiltercomparatorcombobox->setToolTip("Type of Comparison"); - rowsfiltercomparatorcombobox->addItem("="); - rowsfiltercomparatorcombobox->addItem("<"); - rowsfiltercomparatorcombobox->addItem("<="); - rowsfiltercomparatorcombobox->addItem(">"); - rowsfiltercomparatorcombobox->addItem(">="); - rowsfiltercomparatorcombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfilterline = new QLineEdit(); - rowsfilterline->setMinimumWidth(300); - rowsfilterline->setToolTip("Text to Find"); + rowsfilteroperator = new QComboBox(); + rowsfilteroperator->setToolTip("OR = any condition must be met; AND = all conditions must be met."); + rowsfilteroperator->addItem("OR"); + rowsfilteroperator->addItem("AND"); + rowsfilteroperator->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercombobox1 = new QComboBox(); + rowsfiltercombobox1->setToolTip("Column to be Searched"); + rowsfiltercombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox1 = new QComboBox(); + rowsfiltercomparatorcombobox1->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox1->addItem("="); + rowsfiltercomparatorcombobox1->addItem("<"); + rowsfiltercomparatorcombobox1->addItem("<="); + rowsfiltercomparatorcombobox1->addItem(">"); + rowsfiltercomparatorcombobox1->addItem(">="); + rowsfiltercomparatorcombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline1 = new QLineEdit(); + rowsfilterline1->setMinimumWidth(150); + rowsfilterline1->setToolTip("Text to Find"); + + rowsfiltercombobox2 = new QComboBox(); + rowsfiltercombobox2->setToolTip("Column to be Searched"); + rowsfiltercombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox2 = new QComboBox(); + rowsfiltercomparatorcombobox2->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox2->addItem("="); + rowsfiltercomparatorcombobox2->addItem("<"); + rowsfiltercomparatorcombobox2->addItem("<="); + rowsfiltercomparatorcombobox2->addItem(">"); + rowsfiltercomparatorcombobox2->addItem(">="); + rowsfiltercomparatorcombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline2 = new QLineEdit(); + rowsfilterline2->setMinimumWidth(150); + rowsfilterline2->setToolTip("Text to Find"); rowsfiltercasesensitive = new QCheckBox(); rowsfiltercasesensitive->setToolTip("Case Sensitive"); @@ -63,11 +86,19 @@ cModificationsWidget::cModificationsWidget(QWidget* parent) { rowsfilterclearbutton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); rowsfilterhbox = new QHBoxLayout(); - rowsfilterhbox->addWidget(rowsfiltercombobox); + rowsfilterhbox->addWidget(rowsfiltercombobox1); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox1); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfilterline); + rowsfilterhbox->addWidget(rowsfilterline1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilteroperator); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilterline2); rowsfilterhbox->addSpacing(10); rowsfilterhbox->addWidget(rowsfiltercasesensitive); rowsfilterhbox->addSpacing(10); @@ -85,7 +116,7 @@ cModificationsWidget::cModificationsWidget(QWidget* parent) { proxymodel = new cModificationsProxyModel(this); proxymodel->setSourceModel(databasemodel); proxymodel->setDynamicSortFilter(false); - proxymodel->initialize(rowsfiltercombobox, rowsfiltercomparatorcombobox); + proxymodel->initialize(rowsfilteroperator, rowsfiltercombobox1, rowsfiltercomparatorcombobox1, rowsfilterline1, rowsfiltercombobox2, rowsfiltercomparatorcombobox2, rowsfilterline2); database->setModel(proxymodel); database->setSortingEnabled(true); @@ -115,7 +146,7 @@ cModificationsWidget::cModificationsWidget(QWidget* parent) { actionSaveDatabase->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); actionSaveDatabase->setToolTip("Save Database... (Ctrl + S)"); toolbarFile->addAction(actionSaveDatabase); - connect(actionSaveDatabase, SIGNAL(triggered()), this, SLOT(saveDatabase())); + connect(actionSaveDatabase, SIGNAL(triggered()), this, SLOT(saveDatabaseCheck())); actionSaveDatabaseAs = new QAction(QIcon(":/images/icons/86.png"), tr("Save &Database As..."), this); actionSaveDatabaseAs->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D)); @@ -168,6 +199,8 @@ cModificationsWidget::cModificationsWidget(QWidget* parent) { actionHTMLDocumentation->setToolTip("Show HTML Documentation (F1)"); toolbarHelp->addAction(actionHTMLDocumentation); connect(actionHTMLDocumentation, SIGNAL(triggered()), this, SLOT(showHTMLDocumentation())); + + addToolBarBreak(); toolbarFilter = addToolBar(tr("Filter")); toolbarFilter->addWidget(rowsfilterwidget); @@ -203,7 +236,7 @@ cModificationsWidget::cModificationsWidget(QWidget* parent) { setCentralWidget(mainwidget); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); databasefile = ""; @@ -226,9 +259,13 @@ cModificationsWidget::~cModificationsWidget() { delete proxymodel; delete database; - delete rowsfiltercombobox; - delete rowsfiltercomparatorcombobox; - delete rowsfilterline; + delete rowsfilteroperator; + delete rowsfiltercombobox1; + delete rowsfiltercomparatorcombobox1; + delete rowsfilterline1; + delete rowsfiltercombobox2; + delete rowsfiltercomparatorcombobox2; + delete rowsfilterline2; delete rowsfiltercasesensitive; delete rowsfilterwholeword; delete rowsfilterbutton; @@ -290,9 +327,11 @@ void cModificationsWidget::resetHeader() { databasemodel->setHorizontalHeaderItem(5, new QStandardItem("C-terminal")); database->setItemDelegateForColumn(5, new cCheckBoxDelegate()); - rowsfiltercombobox->clear(); + rowsfiltercombobox1->clear(); + rowsfiltercombobox2->clear(); for (int i = 1; i < databasemodel->columnCount() - 2; i++) { - rowsfiltercombobox->addItem(databasemodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox1->addItem(databasemodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox2->addItem(databasemodel->horizontalHeaderItem(i)->text()); } database->horizontalHeader()->setStretchLastSection(true); @@ -358,13 +397,13 @@ void cModificationsWidget::setDataModified(bool datamodified) { void cModificationsWidget::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return)) { - if (rowsfilterline->hasFocus()) { + if (rowsfilterline1->hasFocus() || rowsfilterline2->hasFocus()) { filterRows(); } } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_F)) { - rowsfilterline->setFocus(); + rowsfilterline1->setFocus(); } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_T)) { @@ -592,6 +631,18 @@ bool cModificationsWidget::saveDatabaseAs() { } +void cModificationsWidget::saveDatabaseCheck() { + QMessageBox::StandardButton reply; + reply = QMessageBox::question(this, appname, "Save changes ?", QMessageBox::Yes | QMessageBox::No); + + if (reply == QMessageBox::No) { + return; + } + + saveDatabase(); +} + + void cModificationsWidget::addRow() { resetFilter(); @@ -654,12 +705,13 @@ void cModificationsWidget::filterRows() { proxymodel->setWholeWord(rowsfilterwholeword->isChecked()); proxymodel->setFilterKeyColumn(-1); proxymodel->setFilterCaseSensitivity(rowsfiltercasesensitive->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive); - proxymodel->setFilterFixedString(rowsfilterline->text()); + proxymodel->setFilterFixedString(""); } void cModificationsWidget::resetFilter() { - rowsfilterline->setText(""); + rowsfilterline1->setText(""); + rowsfilterline2->setText(""); database->horizontalHeader()->setSortIndicator(-1, Qt::AscendingOrder); proxymodel->sort(-1); diff --git a/CycloBranch/gui/cModificationsWidget.h b/CycloBranch/gui/cModificationsWidget.h index 494c1e9..cb1678c 100644 --- a/CycloBranch/gui/cModificationsWidget.h +++ b/CycloBranch/gui/cModificationsWidget.h @@ -96,9 +96,13 @@ class cModificationsWidget : public QMainWindow QToolBar* toolbarFilter; QWidget* rowsfilterwidget; QHBoxLayout* rowsfilterhbox; - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; - QLineEdit* rowsfilterline; + QComboBox* rowsfilteroperator; + QComboBox* rowsfiltercombobox1; + QComboBox* rowsfiltercomparatorcombobox1; + QLineEdit* rowsfilterline1; + QComboBox* rowsfiltercombobox2; + QComboBox* rowsfiltercomparatorcombobox2; + QLineEdit* rowsfilterline2; QCheckBox* rowsfiltercasesensitive; QCheckBox* rowsfilterwholeword; QPushButton* rowsfilterbutton; @@ -148,6 +152,8 @@ private slots: bool saveDatabaseAs(); + void saveDatabaseCheck(); + void addRow(); void removeSelectedRows(); diff --git a/CycloBranch/gui/cMultipleButtonDelegate.cpp b/CycloBranch/gui/cMultipleButtonDelegate.cpp index d02c8c7..ddf0e0f 100644 --- a/CycloBranch/gui/cMultipleButtonDelegate.cpp +++ b/CycloBranch/gui/cMultipleButtonDelegate.cpp @@ -42,7 +42,7 @@ void cMultipleButtonDelegate::paint(QPainter* painter, const QStyleOptionViewIte bool cMultipleButtonDelegate::editorEvent(QEvent* event, QAbstractItemModel* model, const QStyleOptionViewItem& option, const QModelIndex& index) { if (event->type() == QEvent::MouseButtonRelease) { QString acronyms = index.model()->index(index.row(), 2).data(Qt::DisplayRole).toString(); - QString references = index.model()->index(index.row(), 6).data(Qt::DisplayRole).toString(); + QString references = index.model()->index(index.row(), 7).data(Qt::DisplayRole).toString(); if (acronyms.isEmpty() || references.isEmpty()) { return false; diff --git a/CycloBranch/gui/cNeutralLossesListWidget.cpp b/CycloBranch/gui/cNeutralLossesListWidget.cpp index 2555745..d17be24 100644 --- a/CycloBranch/gui/cNeutralLossesListWidget.cpp +++ b/CycloBranch/gui/cNeutralLossesListWidget.cpp @@ -14,8 +14,8 @@ cNeutralLossesListWidget::cNeutralLossesListWidget(QObject* parent) { hbox = new QHBoxLayout(); list = new QListWidget(); - list->setMinimumHeight(180); - list->setMaximumHeight(180); + list->setMinimumHeight(175); + list->setMaximumHeight(175); list->setSelectionMode(QAbstractItemView::MultiSelection); selectallbutton = new QPushButton("Select All"); @@ -28,6 +28,8 @@ cNeutralLossesListWidget::cNeutralLossesListWidget(QObject* parent) { removebutton->setToolTip("Remove selected items."); defaultbutton = new QPushButton("Default"); defaultbutton->setToolTip("Set default items."); + hconbutton = new QPushButton("HCON"); + hconbutton->setToolTip("Set the default chemical elements H, C, O, N, S, and P."); vbox1->addWidget(list); vbox1->addStretch(1); @@ -37,6 +39,7 @@ cNeutralLossesListWidget::cNeutralLossesListWidget(QObject* parent) { vbox2->addWidget(addbutton); vbox2->addWidget(removebutton); vbox2->addWidget(defaultbutton); + vbox2->addWidget(hconbutton); vbox2->addStretch(1); hbox->setMargin(0); @@ -48,6 +51,7 @@ cNeutralLossesListWidget::cNeutralLossesListWidget(QObject* parent) { connect(addbutton, SIGNAL(released()), this, SLOT(addEmptyItem())); connect(removebutton, SIGNAL(released()), this, SLOT(removeItem())); connect(defaultbutton, SIGNAL(released()), this, SLOT(setDefaultItems())); + connect(hconbutton, SIGNAL(released()), this, SLOT(setHCON())); setLayout(hbox); @@ -62,6 +66,7 @@ cNeutralLossesListWidget::~cNeutralLossesListWidget() { delete addbutton; delete removebutton; delete defaultbutton; + delete hconbutton; delete vbox1; delete vbox2; @@ -132,5 +137,8 @@ void cNeutralLossesListWidget::setHCON() { addItem("N"); selectAllItems(); + + addItem("S:1"); + addItem("P:1"); } diff --git a/CycloBranch/gui/cNeutralLossesListWidget.h b/CycloBranch/gui/cNeutralLossesListWidget.h index 563455b..3c9ff6e 100644 --- a/CycloBranch/gui/cNeutralLossesListWidget.h +++ b/CycloBranch/gui/cNeutralLossesListWidget.h @@ -65,6 +65,7 @@ class cNeutralLossesListWidget : public QWidget QPushButton* addbutton; QPushButton* removebutton; QPushButton* defaultbutton; + QPushButton* hconbutton; QHBoxLayout* hbox; QVBoxLayout* vbox1; diff --git a/CycloBranch/gui/cParametersWidget.cpp b/CycloBranch/gui/cParametersWidget.cpp index 3d4e654..5acd447 100644 --- a/CycloBranch/gui/cParametersWidget.cpp +++ b/CycloBranch/gui/cParametersWidget.cpp @@ -28,8 +28,8 @@ cParametersWidget::cParametersWidget(QWidget* parent) { this->parent = parent; - int leftdefaultwidth = 370; - int rightdefaultwidth = 370; + int leftdefaultwidth = 400; + int rightdefaultwidth = 400; int searchedsequencedefaultwidth = 510; int checkboxfieldwidth = 80; @@ -67,11 +67,17 @@ cParametersWidget::cParametersWidget(QWidget* parent) { mode = new QComboBox(); mode->setSizeAdjustPolicy(QComboBox::AdjustToContents); - mode->setToolTip("'De Novo Search Engine' - the default mode of the application.\n'Compare Peaklist(s) with Spectrum of Searched Sequence' - a theoretical spectrum is generated for the input 'Searched Sequence' and is compared with the peaklist(s).\n'Compare Peaklist with Database - MS/MS data' - a peaklist is compared with theoretical spectra generated from a database of sequences.\n'Compare Peaklist(s) with Database - MS or MSI data' - compound search; dereplication; the peaklists are compared with theoretical peaks generated from a database of compounds/sequences."); - mode->addItem(tr("De Novo Search Engine")); - mode->addItem(tr("Compare Peaklist(s) with Spectrum of Searched Sequence")); - mode->addItem(tr("Compare Peaklist with Database - MS/MS data")); - mode->addItem(tr("Compare Peaklist(s) with Database - MS or MSI data")); + QString modetooltip = "'De Novo Search Engine - MS/MS': perform the de novo sequencing.\n"; + modetooltip += "'Compare Peaklist(s) with Spectrum of Searched Sequence - MS/MS': a theoretical spectrum is generated from the input 'Searched Sequence' and compared with the peaklist(s).\n"; + modetooltip += "'Compare Peaklist with Database - MS/MS': a peaklist is compared with theoretical spectra generated from a database of sequences.\n"; + modetooltip += "'Compare Peaklist(s) with Database - MS, LC-MS, MSI': dereplication; the peaklist(s) are compared with a theoretical peaklist generated from a database of compounds.\n"; + modetooltip += "'Compound Search - MS, LC-MS, MSI': the peaklist(s) are compared with a theoretical peaklist generated from a list of input chemical elements (a database-free search method)."; + mode->setToolTip(modetooltip); + mode->addItem(tr("De Novo Search Engine - MS/MS")); + mode->addItem(tr("Compare Peaklist(s) with Spectrum of Searched Sequence - MS/MS")); + mode->addItem(tr("Compare Peaklist with Database - MS/MS")); + mode->addItem(tr("Compare Peaklist(s) with Database - MS, LC-MS, MSI")); + mode->addItem(tr("Compound Search - MS, LC-MS, MSI")); mode->setFixedWidth(leftdefaultwidth); modelabel = new QLabel("Mode:"); searchgridlayout->addWidget(modelabel, 0, 0); @@ -102,7 +108,7 @@ cParametersWidget::cParametersWidget(QWidget* parent) { peptidetype->addItem(tr("Branch-cyclic")); peptidetype->addItem(tr("Linear polyketide")); peptidetype->addItem(tr("Cyclic polyketide")); - //peptidetype->addItem(tr("Other")); + peptidetype->addItem(tr("Other")); peptidetype->setFixedWidth(leftdefaultwidth); peptidetypelabel = new QLabel("Peptide Type:"); experimentalspectragridlayout->addWidget(peptidetypelabel, 0, 0); @@ -152,7 +158,7 @@ cParametersWidget::cParametersWidget(QWidget* parent) { experimentalspectragridlayout->addWidget(precursormass, 3, 1); precursoradduct = new QLineEdit(); - precursoradduct->setToolTip("Enter the formula of a precursor ion adduct (e.g., Na, K, Li).\nH is used by default if the field is empty.\nSee the manual for more options."); + precursoradduct->setToolTip("Enter the formula of a precursor ion adduct (e.g., Na, K, Li).\nH is used by default if the field is empty.\nm/z ratios of theoretical peaks are shifted by mass of adduct.\nSee the manual for more details."); precursoradduct->setFixedWidth(leftdefaultwidth); precursoradductlabel = new QLabel("Precursor Ion Adduct:"); experimentalspectragridlayout->addWidget(precursoradductlabel, 4, 0); @@ -212,12 +218,27 @@ cParametersWidget::cParametersWidget(QWidget* parent) { minimummz = new QDoubleSpinBox(); minimummz->setToolTip("Enter the minimum m/z ratio. Peaks with m/z ratios below the threshold are removed from the peaklist."); minimummz->setDecimals(3); - minimummz->setRange(0, 10000); + minimummz->setRange(0, 100000); minimummz->setSingleStep(1); - minimummz->setFixedWidth(leftdefaultwidth); - minimummzlabel = new QLabel("Minimum m/z Ratio:"); - experimentalspectragridlayout->addWidget(minimummzlabel, 10, 0); - experimentalspectragridlayout->addWidget(minimummz, 10, 1); + minimummz->setPrefix("minimum: "); + + maximummz = new QDoubleSpinBox(); + maximummz->setToolTip("Enter the maximum m/z ratio. Peaks with m/z ratios above the threshold are removed from the peaklist (0 = disabled)."); + maximummz->setDecimals(3); + maximummz->setRange(0, 100000); + maximummz->setSingleStep(1); + maximummz->setPrefix("maximum: "); + + mzratiolayout = new QHBoxLayout(); + mzratiolayout->addWidget(minimummz); + mzratiolayout->addWidget(maximummz); + mzratiolayout->setMargin(0); + mzratiowidget = new QWidget(); + mzratiowidget->setLayout(mzratiolayout); + mzratiowidget->setFixedWidth(leftdefaultwidth); + mzratiolabel = new QLabel("m/z Ratio:"); + experimentalspectragridlayout->addWidget(mzratiolabel, 10, 0); + experimentalspectragridlayout->addWidget(mzratiowidget, 10, 1); fwhm = new QDoubleSpinBox(); fwhm->setToolTip("Full width at half maximum. The value is used if the profile spectra are converted into peaklists (mzML and imzML) and if the full isotope patterns of compounds are generated."); @@ -326,14 +347,14 @@ cParametersWidget::cParametersWidget(QWidget* parent) { miscgridlayout = new QGridLayout(); similaritysearch = new QCheckBox(); - similaritysearch->setToolTip("Disable the filtering of sequence candidates by precursor mass. This option can be used to determine a peptide family when a modified peptide is included in a sequence database."); + similaritysearch->setToolTip("Disable the filtering of compounds by precursor mass."); similaritysearch->setFixedWidth(checkboxfieldwidth); similaritysearchlabel = new QLabel("Disable Precursor Mass Filter:"); miscgridlayout->addWidget(similaritysearchlabel, 0, 0); miscgridlayout->addWidget(similaritysearch, 0, 1); internalfragments = new QCheckBox(); - internalfragments->setToolTip("Generate internal fragment ions in theoretical spectra."); + internalfragments->setToolTip("Generate internal fragment ions in theoretical spectra.\nThis feature is currently available only for branch-cyclic peptides."); internalfragments->setFixedWidth(checkboxfieldwidth); internalfragmentslabel = new QLabel("Internal Fragments:"); miscgridlayout->addWidget(internalfragmentslabel, 1, 0); @@ -427,18 +448,18 @@ cParametersWidget::cParametersWidget(QWidget* parent) { theoreticalspectragridlayout->addWidget(iontypes, 4, 1); neutrallosstypes = new cNeutralLossesListWidget(this); - neutrallosstypes->setToolTip("Define and select the types of neutral losses which will be generated in theoretical spectra."); + neutrallosstypes->setToolTip("Define and select the types of neutral losses or chemical elements which will be used when generating theoretical spectra."); neutrallosstypes->setFixedWidth(rightdefaultwidth); - neutrallosstypeslabel = new QLabel("Neutral Losses:"); + neutrallosstypeslabel = new QLabel("Neutral Losses / Chemical Elements:"); theoreticalspectragridlayout->addWidget(neutrallosstypeslabel, 5, 0); theoreticalspectragridlayout->addWidget(neutrallosstypes, 5, 1); maximumcombinedlosses = new QSpinBox(); - maximumcombinedlosses->setToolTip("Maximum number of combined neutral losses."); + maximumcombinedlosses->setToolTip("Maximum number of combined neutral losses or chemical elements."); maximumcombinedlosses->setRange(0, 10000); maximumcombinedlosses->setSingleStep(1); maximumcombinedlosses->setFixedWidth(rightdefaultwidth); - maximumcombinedlosseslabel = new QLabel("Maximum Number of Combined Losses:"); + maximumcombinedlosseslabel = new QLabel("Maximum Number of Combined Losses/Elements:"); theoreticalspectragridlayout->addWidget(maximumcombinedlosseslabel, 6, 0); theoreticalspectragridlayout->addWidget(maximumcombinedlosses, 6, 1); @@ -462,29 +483,74 @@ cParametersWidget::cParametersWidget(QWidget* parent) { theoreticalspectragridlayout->addWidget(generateisotopepattern, 8, 1); minimumpatternsize = new QSpinBox(); - minimumpatternsize->setToolTip("The minimum number of matched peaks in an isotope pattern to be reported. The option \"Generate Full Isotope Patterns\" must be enabled."); + minimumpatternsize->setToolTip("The minimum number of peaks which must be annotated in an isotopic pattern. The option \"Generate Full Isotope Patterns\" must be enabled."); minimumpatternsize->setRange(1, 100); minimumpatternsize->setSingleStep(1); minimumpatternsize->setFixedWidth(rightdefaultwidth); - minimumpatternsizelabel = new QLabel("Minimum Pattern Size:"); + minimumpatternsizelabel = new QLabel("Minimum Number of Isotopic Peaks:"); theoreticalspectragridlayout->addWidget(minimumpatternsizelabel, 9, 0); theoreticalspectragridlayout->addWidget(minimumpatternsize, 9, 1); minimumfeaturesize = new QSpinBox(); - minimumfeaturesize->setToolTip("The minimum number of consecutive scans in which a compound must be identified to be reported (LC-MS data only)."); + minimumfeaturesize->setToolTip("The minimum number of spectra in which a compound must be identified to be reported.\nLC-MS data = the minimum number of consecutive scans;\nMSI data = the minimum number of pixels."); minimumfeaturesize->setRange(1, 10000); minimumfeaturesize->setSingleStep(1); minimumfeaturesize->setFixedWidth(rightdefaultwidth); - minimumfeaturesizelabel = new QLabel("Minimum Feature Size:"); + minimumfeaturesizelabel = new QLabel("Minimum Number of Spectra:"); theoreticalspectragridlayout->addWidget(minimumfeaturesizelabel, 10, 0); theoreticalspectragridlayout->addWidget(minimumfeaturesize, 10, 1); - allionsmustbepresent = new QCheckBox(); - allionsmustbepresent->setToolTip("If enabled, all ions must be annotated in a spectrum for a compound to be reported."); - allionsmustbepresent->setFixedWidth(rightdefaultwidth); - allionsmustbepresentlabel = new QLabel("All Ions Must be Annotated:"); - theoreticalspectragridlayout->addWidget(allionsmustbepresentlabel, 11, 0); - theoreticalspectragridlayout->addWidget(allionsmustbepresent, 11, 1); + minimumiontypes = new QSpinBox(); + minimumiontypes->setToolTip("The minimum number of ion types which must be matched to report a given compound."); + minimumiontypes->setRange(1, 100); + minimumiontypes->setSingleStep(1); + minimumiontypes->setFixedWidth(rightdefaultwidth); + minimumiontypeslabel = new QLabel("Minimum Number of Ion Types:"); + theoreticalspectragridlayout->addWidget(minimumiontypeslabel, 11, 0); + theoreticalspectragridlayout->addWidget(minimumiontypes, 11, 1); + + basicformulacheck = new QCheckBox(); + basicformulacheck->setToolTip("Apply Senior's filtering rules."); + basicformulacheck->setFixedWidth(rightdefaultwidth); + basicformulachecklabel = new QLabel("Basic Formula Check:"); + theoreticalspectragridlayout->addWidget(basicformulachecklabel, 12, 0); + theoreticalspectragridlayout->addWidget(basicformulacheck, 12, 1); + + advancedformulacheck = new QCheckBox(); + advancedformulacheck->setToolTip("Apply advanced filtering rules if molecular formulas of compounds are generated."); + advancedformulacheck->setFixedWidth(rightdefaultwidth); + advancedformulachecklabel = new QLabel("Advanced Formula Check:"); + theoreticalspectragridlayout->addWidget(advancedformulachecklabel, 13, 0); + theoreticalspectragridlayout->addWidget(advancedformulacheck, 13, 1); + + noratiocheck = new QCheckBox(); + noratiocheck->setToolTip("Check if the number of nitrogen atoms is less or equal to the number of oxygen atoms."); + noratiocheck->setFixedWidth(rightdefaultwidth); + noratiochecklabel = new QLabel("N/O Ratio Check:"); + theoreticalspectragridlayout->addWidget(noratiochecklabel, 14, 0); + theoreticalspectragridlayout->addWidget(noratiocheck, 14, 1); + + mzdifftolerance = new QDoubleSpinBox(); + mzdifftolerance->setToolTip("The maximum m/z error of difference between an isotopic peak and the monoisotopic peak in an experimental and theoretical isotopic pattern (0 = disabled) [ppm]."); + mzdifftolerance->setDecimals(3); + mzdifftolerance->setRange(0, 10000); + mzdifftolerance->setSingleStep(1); + mzdifftolerance->setSuffix(" ppm"); + mzdifftolerance->setFixedWidth(rightdefaultwidth); + mzdifftolerancelabel = new QLabel("Isotope m/z Tolerance:"); + theoreticalspectragridlayout->addWidget(mzdifftolerancelabel, 15, 0); + theoreticalspectragridlayout->addWidget(mzdifftolerance, 15, 1); + + intensitytolerance = new QDoubleSpinBox(); + intensitytolerance->setToolTip("The maximum error tolerance of intensities of matched isotopes (0 = disabled) [in % of relative intensity of monoisotopic peak].\nExample:\nIsotope Intensity Tolerance = 10%, Relative Intensity of Monoisotopic Peak = 100% => the tolerance of relative intensities of isotopes is 10%;\nIsotope Intensity Tolerance = 10%, Relative Intensity of Monoisotopic Peak = 50% => the tolerance of relative intensities of isotopes is 5%; etc."); + intensitytolerance->setDecimals(3); + intensitytolerance->setRange(0, 100); + intensitytolerance->setSingleStep(1); + intensitytolerance->setSuffix(" %"); + intensitytolerance->setFixedWidth(rightdefaultwidth); + intensitytolerancelabel = new QLabel("Isotope Intensity Tolerance:"); + theoreticalspectragridlayout->addWidget(intensitytolerancelabel, 16, 0); + theoreticalspectragridlayout->addWidget(intensitytolerance, 16, 1); theoreticalspectragroupbox = new QGroupBox("Theoretical Spectrum/Spectra"); theoreticalspectragroupbox->setLayout(theoreticalspectragridlayout); @@ -512,26 +578,36 @@ cParametersWidget::cParametersWidget(QWidget* parent) { searchedsequenceNtermmodif = new QLineEdit(); searchedsequenceNtermmodif->setToolTip("A name of an N-terminal modification which belongs to the searched peptide. The name must be defined in \"N-/C-terminal Modifications File\"."); - searchedsequenceNtermmodif->setFixedWidth(searchedsequencedefaultwidth); - searchedsequenceNtermmodiflabel = new QLabel("N-terminal Modification:"); - searchedsequencegridlayout->addWidget(searchedsequenceNtermmodiflabel, 1, 0); - searchedsequencegridlayout->addWidget(searchedsequenceNtermmodif, 1, 1); + searchedsequenceNtermmodif->setPlaceholderText("N-terminal"); searchedsequenceCtermmodif = new QLineEdit(); searchedsequenceCtermmodif->setToolTip("A name of a C-terminal modification which belongs to the searched peptide. The name must be defined in \"N-/C-terminal Modifications File\"."); - searchedsequenceCtermmodif->setFixedWidth(searchedsequencedefaultwidth); - searchedsequenceCtermmodiflabel = new QLabel("C-terminal Modification:"); - searchedsequencegridlayout->addWidget(searchedsequenceCtermmodiflabel, 2, 0); - searchedsequencegridlayout->addWidget(searchedsequenceCtermmodif, 2, 1); + searchedsequenceCtermmodif->setPlaceholderText("C-terminal"); searchedsequenceTmodif = new QLineEdit(); searchedsequenceTmodif->setToolTip("A name of an N-terminal or C-terminal modification which belongs to a branch of a searched peptide (branched and branch-cyclic peptides only). The name must be defined in \"N-/C-terminal Modifications File\"."); - searchedsequenceTmodif->setFixedWidth(searchedsequencedefaultwidth); - searchedsequenceTmodiflabel = new QLabel("Branch Modification:"); - searchedsequencegridlayout->addWidget(searchedsequenceTmodiflabel, 3, 0); - searchedsequencegridlayout->addWidget(searchedsequenceTmodif, 3, 1); - - searchedsequencegroupbox = new QGroupBox("Searched Sequence"); + searchedsequenceTmodif->setPlaceholderText("Branch"); + + searchedsequencemodiflayout = new QHBoxLayout(); + searchedsequencemodiflayout->addWidget(searchedsequenceNtermmodif); + searchedsequencemodiflayout->addWidget(searchedsequenceCtermmodif); + searchedsequencemodiflayout->addWidget(searchedsequenceTmodif); + searchedsequencemodiflayout->setMargin(0); + searchedsequencemodifwidget = new QWidget(); + searchedsequencemodifwidget->setLayout(searchedsequencemodiflayout); + searchedsequencemodifwidget->setFixedWidth(searchedsequencedefaultwidth); + searchedsequencemodiflabel = new QLabel("Modifications:"); + searchedsequencegridlayout->addWidget(searchedsequencemodiflabel, 1, 0); + searchedsequencegridlayout->addWidget(searchedsequencemodifwidget, 1, 1); + + searchedsequenceformula = new QLineEdit(); + searchedsequenceformula->setToolTip("Formula of searched sequence."); + searchedsequenceformula->setFixedWidth(searchedsequencedefaultwidth); + searchedsequenceformulalabel = new QLabel("Formula:"); + searchedsequencegridlayout->addWidget(searchedsequenceformulalabel, 2, 0); + searchedsequencegridlayout->addWidget(searchedsequenceformula, 2, 1); + + searchedsequencegroupbox = new QGroupBox("Searched Sequence/Compound"); searchedsequencegroupbox->setLayout(searchedsequencegridlayout); @@ -566,7 +642,7 @@ cParametersWidget::cParametersWidget(QWidget* parent) { setLayout(vlayout); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); connect(load, SIGNAL(released()), this, SLOT(loadSettings())); connect(save, SIGNAL(released()), this, SLOT(saveSettings())); @@ -593,24 +669,26 @@ cParametersWidget::cParametersWidget(QWidget* parent) { #if OS_TYPE == WIN lastdirloadsettings = "./Settings/"; lastdirsavesettings = "./Settings/"; - lastdirselectpeaklist = "./PeakLists/"; - lastdirselectbricksdatabase = "./BrickDatabases/"; - lastdirselectmodifications = "./Modifications/"; - lastdirselectsequencedatabase = "./SequenceDatabases/"; + + defaultdirselectpeaklist = "./PeakLists/"; + defaultdirselectbricksdatabase = "./BrickDatabases/"; + defaultdirselectmodifications = "./Modifications/"; + defaultdirselectsequencedatabase = "./SequenceDatabases/"; #else lastdirloadsettings = installdir + "Settings/"; lastdirsavesettings = installdir + "Settings/"; - lastdirselectpeaklist = installdir + "PeakLists/"; - lastdirselectbricksdatabase = installdir + "BrickDatabases/"; - lastdirselectmodifications = installdir + "Modifications/"; - lastdirselectsequencedatabase = installdir + "SequenceDatabases/"; + + defaultdirselectpeaklist = installdir + "PeakLists/"; + defaultdirselectbricksdatabase = installdir + "BrickDatabases/"; + defaultdirselectmodifications = installdir + "Modifications/"; + defaultdirselectsequencedatabase = installdir + "SequenceDatabases/"; #endif + mode->setCurrentIndex(dereplication); } cParametersWidget::~cParametersWidget() { - delete stdbuttons; delete load; delete save; @@ -648,8 +726,11 @@ cParametersWidget::~cParametersWidget() { delete minimumrelativeintensitythreshold; delete minimumabsoluteintensitythresholdlabel; delete minimumabsoluteintensitythreshold; - delete minimummzlabel; + delete mzratiolabel; delete minimummz; + delete maximummz; + delete mzratiolayout; + delete mzratiowidget; delete fwhmlabel; delete fwhm; delete experimentalspectragridlayout; @@ -719,8 +800,18 @@ cParametersWidget::~cParametersWidget() { delete minimumpatternsize; delete minimumfeaturesizelabel; delete minimumfeaturesize; - delete allionsmustbepresentlabel; - delete allionsmustbepresent; + delete minimumiontypeslabel; + delete minimumiontypes; + delete basicformulachecklabel; + delete basicformulacheck; + delete advancedformulachecklabel; + delete advancedformulacheck; + delete noratiochecklabel; + delete noratiocheck; + delete mzdifftolerancelabel; + delete mzdifftolerance; + delete intensitytolerancelabel; + delete intensitytolerance; delete theoreticalspectragridlayout; delete theoreticalspectragroupbox; @@ -729,12 +820,14 @@ cParametersWidget::~cParametersWidget() { delete searchedsequencebutton; delete searchedsequencelayout; delete searchedsequencewidget; - delete searchedsequenceNtermmodiflabel; + delete searchedsequencemodiflabel; delete searchedsequenceNtermmodif; - delete searchedsequenceCtermmodiflabel; delete searchedsequenceCtermmodif; - delete searchedsequenceTmodiflabel; delete searchedsequenceTmodif; + delete searchedsequencemodiflayout; + delete searchedsequencemodifwidget; + delete searchedsequenceformulalabel; + delete searchedsequenceformula; delete searchedsequencegridlayout; delete searchedsequencegroupbox; @@ -774,7 +867,7 @@ void cParametersWidget::closeEvent(QCloseEvent *event) { void cParametersWidget::setSequence(int peptidetypeindex, QString sequence) { - if ((eModeType)mode->currentIndex() == dereplication) { + if (((eModeType)mode->currentIndex() == dereplication) || ((eModeType)mode->currentIndex() == compoundsearch)) { mode->setCurrentIndex(denovoengine); } peptidetype->setCurrentIndex(peptidetypeindex); @@ -783,7 +876,7 @@ void cParametersWidget::setSequence(int peptidetypeindex, QString sequence) { void cParametersWidget::setTag(int peptidetypeindex, QString tag) { - if ((eModeType)mode->currentIndex() == dereplication) { + if (((eModeType)mode->currentIndex() == dereplication) || ((eModeType)mode->currentIndex() == compoundsearch)) { mode->setCurrentIndex(denovoengine); } peptidetype->setCurrentIndex(peptidetypeindex); @@ -809,6 +902,9 @@ void cParametersWidget::keyPressEvent(QKeyEvent *event) { emit clearIonSelection(); emit setHCON(); } + if (mode->currentIndex() == (int)compoundsearch) { + emit setHCON(); + } } if (event->key() == Qt::Key_F1) { @@ -836,7 +932,7 @@ void cParametersWidget::loadSettings() { save->setText(QString(" Save '") + QString(settingsfile.toStdString().substr(settingsfile.toStdString().rfind('/') + 1, settingsfile.toStdString().size()).c_str()) + QString("' ")); QSettings settings(settingsfile, QSettings::IniFormat); - mode->setCurrentIndex(settings.value("mode", 0).toInt()); + mode->setCurrentIndex(settings.value("mode", 3).toInt()); maximumnumberofthreads->setValue(settings.value("maximumnumberofthreads", 1).toInt()); peptidetype->setCurrentIndex(settings.value("peptidetype", 0).toInt()); @@ -855,6 +951,7 @@ void cParametersWidget::loadSettings() { minimumrelativeintensitythreshold->setValue(settings.value("minimumrelativeintensitythreshold", 1).toDouble()); minimumabsoluteintensitythreshold->setValue(settings.value("minimumabsoluteintensitythreshold", 0).toUInt()); minimummz->setValue(settings.value("minimummz", 150).toDouble()); + maximummz->setValue(settings.value("maximummz", 0).toDouble()); fwhm->setValue(settings.value("fwhm", 0.05).toDouble()); brickdatabaseline->setText(settings.value("brickdatabase", "").toString()); @@ -904,12 +1001,18 @@ void cParametersWidget::loadSettings() { settings.value("generateisotopepattern", 0).toInt() == 0 ? generateisotopepattern->setChecked(false) : generateisotopepattern->setChecked(true); minimumpatternsize->setValue(settings.value("minimumpatternsize", 1).toInt()); minimumfeaturesize->setValue(settings.value("minimumfeaturesize", 1).toInt()); - settings.value("allionsmustbepresent", 0).toInt() == 0 ? allionsmustbepresent->setChecked(false) : allionsmustbepresent->setChecked(true); + minimumiontypes->setValue(settings.value("minimumiontypes", 1).toInt()); + settings.value("basicformulacheck", 1).toInt() == 0 ? basicformulacheck->setChecked(false) : basicformulacheck->setChecked(true); + settings.value("advancedformulacheck", 1).toInt() == 0 ? advancedformulacheck->setChecked(false) : advancedformulacheck->setChecked(true); + settings.value("noratiocheck", 1).toInt() == 0 ? noratiocheck->setChecked(false) : noratiocheck->setChecked(true); + mzdifftolerance->setValue(settings.value("mzdifftolerance", 0).toDouble()); + intensitytolerance->setValue(settings.value("intensitytolerance", 0).toDouble()); searchedsequenceline->setText(settings.value("searchedsequence", "").toString()); searchedsequenceNtermmodif->setText(settings.value("searchedsequenceNtermmodif", "").toString()); searchedsequenceCtermmodif->setText(settings.value("searchedsequenceCtermmodif", "").toString()); searchedsequenceTmodif->setText(settings.value("searchedsequenceTmodif", "").toString()); + searchedsequenceformula->setText(settings.value("searchedsequenceformula", "").toString()); } } @@ -942,6 +1045,7 @@ void cParametersWidget::saveSettings() { settings.setValue("minimumrelativeintensitythreshold", minimumrelativeintensitythreshold->value()); settings.setValue("minimumabsoluteintensitythreshold", minimumabsoluteintensitythreshold->value()); settings.setValue("minimummz", minimummz->value()); + settings.setValue("maximummz", maximummz->value()); settings.setValue("fwhm", fwhm->value()); settings.setValue("brickdatabase", brickdatabaseline->text()); @@ -983,12 +1087,18 @@ void cParametersWidget::saveSettings() { generateisotopepattern->isChecked() ? settings.setValue("generateisotopepattern", 1) : settings.setValue("generateisotopepattern", 0); settings.setValue("minimumpatternsize", minimumpatternsize->value()); settings.setValue("minimumfeaturesize", minimumfeaturesize->value()); - allionsmustbepresent->isChecked() ? settings.setValue("allionsmustbepresent", 1) : settings.setValue("allionsmustbepresent", 0); + settings.setValue("minimumiontypes", minimumiontypes->value()); + basicformulacheck->isChecked() ? settings.setValue("basicformulacheck", 1) : settings.setValue("basicformulacheck", 0); + advancedformulacheck->isChecked() ? settings.setValue("advancedformulacheck", 1) : settings.setValue("advancedformulacheck", 0); + noratiocheck->isChecked() ? settings.setValue("noratiocheck", 1) : settings.setValue("noratiocheck", 0); + settings.setValue("mzdifftolerance", mzdifftolerance->value()); + settings.setValue("intensitytolerance", intensitytolerance->value()); settings.setValue("searchedsequence", searchedsequenceline->text()); settings.setValue("searchedsequenceNtermmodif", searchedsequenceNtermmodif->text()); settings.setValue("searchedsequenceCtermmodif", searchedsequenceCtermmodif->text()); settings.setValue("searchedsequenceTmodif", searchedsequenceTmodif->text()); + settings.setValue("searchedsequenceformula", searchedsequenceformula->text()); } @@ -1007,44 +1117,60 @@ void cParametersWidget::saveSettingsAs() { void cParametersWidget::peaklistButtonReleased() { + QString currentdir = peaklistline->text(); + if (!checkFile(currentdir.toStdString())) { + currentdir = defaultdirselectpeaklist; + } + #if OS_TYPE != WIN - QString filename = QFileDialog::getOpenFileName(this, tr("Select Peaklist..."), lastdirselectpeaklist, tr("Peak Lists (*.txt *.mgf *.mzML *.mzXML *.imzML)")); + QString filename = QFileDialog::getOpenFileName(this, tr("Select Peaklist..."), currentdir, tr("Peak Lists (*.txt *.mgf *.mzML *.mzXML *.imzML)")); #else - QString filename = QFileDialog::getOpenFileName(this, tr("Select Peaklist..."), lastdirselectpeaklist, tr("Peak Lists (*.txt *.mgf *.mzML *.mzXML *.imzML *.baf *.raw *.dat *.mis ser)")); + QString filename = QFileDialog::getOpenFileName(this, tr("Select Peaklist..."), currentdir, tr("Peak Lists (*.txt *.mgf *.mzML *.mzXML *.imzML *.baf *.raw *.dat *.mis ser)")); #endif if (!filename.isEmpty()) { - lastdirselectpeaklist = filename; peaklistline->setText(filename); } } void cParametersWidget::brickDatabaseButtonReleased() { - QString filename = QFileDialog::getOpenFileName(this, tr("Select Building Blocks Database..."), lastdirselectbricksdatabase, tr("Text Files (*.txt)")); + QString currentdir = brickdatabaseline->text(); + if (!checkFile(currentdir.toStdString())) { + currentdir = defaultdirselectbricksdatabase; + } + + QString filename = QFileDialog::getOpenFileName(this, tr("Select Building Blocks Database..."), currentdir, tr("Text Files (*.txt)")); if (!filename.isEmpty()) { - lastdirselectbricksdatabase = filename; brickdatabaseline->setText(filename); } } void cParametersWidget::modificationsButtonReleased() { - QString filename = QFileDialog::getOpenFileName(this, tr("Select Modifications File..."), lastdirselectmodifications, tr("Text Files (*.txt)")); + QString currentdir = modificationsline->text(); + if (!checkFile(currentdir.toStdString())) { + currentdir = defaultdirselectmodifications; + } + + QString filename = QFileDialog::getOpenFileName(this, tr("Select Modifications File..."), currentdir, tr("Text Files (*.txt)")); if (!filename.isEmpty()) { - lastdirselectmodifications = filename; modificationsline->setText(filename); } } void cParametersWidget::sequenceDatabaseButtonReleased() { - QString filename = QFileDialog::getOpenFileName(this, tr("Select Sequence Database..."), lastdirselectsequencedatabase, tr("Text Files (*.txt)")); + QString currentdir = sequencedatabaseline->text(); + if (!checkFile(currentdir.toStdString())) { + currentdir = defaultdirselectsequencedatabase; + } + + QString filename = QFileDialog::getOpenFileName(this, tr("Select Sequence Database..."), currentdir, tr("Text Files (*.txt)")); if (!filename.isEmpty()) { - lastdirselectsequencedatabase = filename; sequencedatabaseline->setText(filename); } } @@ -1065,7 +1191,7 @@ bool cParametersWidget::updateParameters() { return false; } - if ((brickdatabaseline->text().toStdString().compare("") == 0) && (((eModeType)mode->currentIndex() == denovoengine) || ((eModeType)mode->currentIndex() == singlecomparison) || ((eModeType)mode->currentIndex() == databasesearch))) { + if ((brickdatabaseline->text().toStdString().compare("") == 0) && (((eModeType)mode->currentIndex() == denovoengine) || (((eModeType)mode->currentIndex() == databasesearch) && ((ePeptideType)peptidetype->currentIndex() != other)) || (((eModeType)mode->currentIndex() == singlecomparison) && ((ePeptideType)peptidetype->currentIndex() != other)))) { errstr = "A database of building blocks must be specified!"; msgBox.setText(errstr); msgBox.exec(); @@ -1093,6 +1219,43 @@ bool cParametersWidget::updateParameters() { return false; } + if (((eModeType)mode->currentIndex() == compoundsearch) && (maximummz->value() <= minimummz->value())) { + errstr = "The maximum m/z ratio must be bigger than the minimum m/z ratio!"; + msgBox.setText(errstr); + msgBox.exec(); + return false; + } + + if ((eModeType)mode->currentIndex() == denovoengine) { + if ((ePeptideType)peptidetype->currentIndex() == other) { + errstr = "The peptide type 'Other' cannot be used in this mode!"; + msgBox.setText(errstr); + msgBox.exec(); + return false; + } + } + + if ((eModeType)mode->currentIndex() == singlecomparison) { + if ((ePeptideType)peptidetype->currentIndex() == other) { + if (searchedsequenceformula->text().isEmpty()) { + errstr = "The field 'Formula' is empty!"; + msgBox.setText(errstr); + msgBox.exec(); + return false; + } + + tmpstring = searchedsequenceformula->text().toStdString(); + tmpformula.setFormula(tmpstring, false); + if (!tmpformula.isValid(errmsg)) { + errstr = "The field 'Formula' is not valid!\n\n"; + errstr += errmsg.c_str(); + msgBox.setText(errstr); + msgBox.exec(); + return false; + } + } + } + /* if ((maximumbricksincombinationmiddle->value() < 2) && ((eModeType)mode->currentIndex() == denovoengine) && (((ePeptideType)peptidetype->currentIndex() == branched) || ((ePeptideType)peptidetype->currentIndex() == branchcyclic))) { errstr = "'Maximum Number of Combined Blocks (middle)' must be at least 2 when a branched or a branch-cyclic peptide is searched! (One block represents a branched residue, the other block(s) corresponds to a branch.)"; @@ -1104,8 +1267,12 @@ bool cParametersWidget::updateParameters() { for (int i = 0; i < neutrallosstypes->getList()->count(); i++) { tmpstring = neutrallosstypes->getList()->item(i)->text().toStdString(); - tmpformula.setFormula(tmpstring, false); + + if (tmpstring.rfind(':') != string::npos) { + tmpstring = tmpstring.substr(0, tmpstring.rfind(':')); + } + tmpformula.setFormula(tmpstring, false); if (!tmpformula.isValid(errmsg)) { errstr = "A molecular formula of a neutral loss is not valid!\n\n"; errstr += errmsg.c_str(); @@ -1130,6 +1297,7 @@ bool cParametersWidget::updateParameters() { parameters.minimumrelativeintensitythreshold = minimumrelativeintensitythreshold->value(); parameters.minimumabsoluteintensitythreshold = minimumabsoluteintensitythreshold->value(); parameters.minimummz = minimummz->value(); + parameters.maximummz = maximummz->value(); parameters.fwhm = fwhm->value(); parameters.bricksdatabasefilename = brickdatabaseline->text().toStdString(); @@ -1155,35 +1323,37 @@ bool cParametersWidget::updateParameters() { parameters.originalsequencetag = parameters.sequencetag; parameters.ionsfortheoreticalspectra.clear(); - int start; - - if ((eModeType)mode->currentIndex() == dereplication) { + + int start = -1; + if (((eModeType)mode->currentIndex() == dereplication) || ((eModeType)mode->currentIndex() == compoundsearch)) { start = ms_Hplus; } else { - switch ((ePeptideType)peptidetype->currentIndex()) - { - case linear: - case branched: - case cyclic: - case branchcyclic: - start = a_ion; - break; - case linearpolyketide: - start = l1h_ion; - break; - case cyclicpolyketide: - start = l1h_ion; // l0h_ion; - break; - case other: - default: - break; + switch ((ePeptideType)peptidetype->currentIndex()) { + case linear: + case branched: + case cyclic: + case branchcyclic: + start = a_ion; + break; + case linearpolyketide: + start = l1h_ion; + break; + case cyclicpolyketide: + start = l1h_ion; // l0h_ion; + break; + case other: + break; + default: + break; } } - for (int i = 0; i < iontypes->getList()->count(); i++) { - if (iontypes->getList()->item(i)->isSelected()) { - parameters.ionsfortheoreticalspectra.push_back((eFragmentIonType)(i + start)); + if (start != -1) { + for (int i = 0; i < iontypes->getList()->count(); i++) { + if (iontypes->getList()->item(i)->isSelected()) { + parameters.ionsfortheoreticalspectra.push_back((eFragmentIonType)(i + start)); + } } } @@ -1205,13 +1375,19 @@ bool cParametersWidget::updateParameters() { parameters.generateisotopepattern = generateisotopepattern->isChecked(); parameters.minimumpatternsize = minimumpatternsize->value(); parameters.minimumfeaturesize = minimumfeaturesize->value(); - parameters.allionsmustbepresent = allionsmustbepresent->isChecked(); + parameters.minimumiontypes = minimumiontypes->value(); + parameters.basicformulacheck = basicformulacheck->isChecked(); + parameters.advancedformulacheck = advancedformulacheck->isChecked(); + parameters.noratiocheck = noratiocheck->isChecked(); + parameters.mzdifftolerance = mzdifftolerance->value(); + parameters.intensitytolerance = intensitytolerance->value(); parameters.searchedsequence = searchedsequenceline->text().toStdString(); parameters.originalsearchedsequence = parameters.searchedsequence; parameters.searchedsequenceNtermmodif = searchedsequenceNtermmodif->text().toStdString(); parameters.searchedsequenceCtermmodif = searchedsequenceCtermmodif->text().toStdString(); parameters.searchedsequenceTmodif = searchedsequenceTmodif->text().toStdString(); + parameters.searchedsequenceformula = searchedsequenceformula->text().toStdString(); parameters.updateFragmentDefinitions(); @@ -1244,6 +1420,7 @@ void cParametersWidget::restoreParameters() { minimumrelativeintensitythreshold->setValue(parameters.minimumrelativeintensitythreshold); minimumabsoluteintensitythreshold->setValue(parameters.minimumabsoluteintensitythreshold); minimummz->setValue(parameters.minimummz); + maximummz->setValue(parameters.maximummz); fwhm->setValue(parameters.fwhm); brickdatabaseline->setText(parameters.bricksdatabasefilename.c_str()); @@ -1266,33 +1443,35 @@ void cParametersWidget::restoreParameters() { hitsreported->setValue(parameters.hitsreported); sequencetag->setText(parameters.sequencetag.c_str()); - int start; - if (parameters.mode == dereplication) { + int start = -1; + if ((parameters.mode == dereplication) || (parameters.mode == compoundsearch)) { start = ms_Hplus; } else { - switch (parameters.peptidetype) - { - case linear: - case branched: - case cyclic: - case branchcyclic: - start = a_ion; - break; - case linearpolyketide: - start = l1h_ion; - break; - case cyclicpolyketide: - start = l1h_ion; // l0h_ion; - break; - case other: - default: - break; + switch (parameters.peptidetype) { + case linear: + case branched: + case cyclic: + case branchcyclic: + start = a_ion; + break; + case linearpolyketide: + start = l1h_ion; + break; + case cyclicpolyketide: + start = l1h_ion; // l0h_ion; + break; + case other: + break; + default: + break; } } - for (int i = 0; i < (int)parameters.ionsfortheoreticalspectra.size(); i++) { - iontypes->getList()->item(parameters.ionsfortheoreticalspectra[i] - start)->setSelected(true); + if (start != -1) { + for (int i = 0; i < (int)parameters.ionsfortheoreticalspectra.size(); i++) { + iontypes->getList()->item(parameters.ionsfortheoreticalspectra[i] - start)->setSelected(true); + } } neutrallosstypes->getList()->clear(); @@ -1310,12 +1489,18 @@ void cParametersWidget::restoreParameters() { generateisotopepattern->setChecked(parameters.generateisotopepattern); minimumpatternsize->setValue(parameters.minimumpatternsize); minimumfeaturesize->setValue(parameters.minimumfeaturesize); - allionsmustbepresent->setChecked(parameters.allionsmustbepresent); + minimumiontypes->setValue(parameters.minimumiontypes); + basicformulacheck->setChecked(parameters.basicformulacheck); + advancedformulacheck->setChecked(parameters.advancedformulacheck); + noratiocheck->setChecked(parameters.noratiocheck); + mzdifftolerance->setValue(parameters.mzdifftolerance); + intensitytolerance->setValue(parameters.intensitytolerance); searchedsequenceline->setText(parameters.searchedsequence.c_str()); searchedsequenceNtermmodif->setText(parameters.searchedsequenceNtermmodif.c_str()); searchedsequenceCtermmodif->setText(parameters.searchedsequenceCtermmodif.c_str()); searchedsequenceTmodif->setText(parameters.searchedsequenceTmodif.c_str()); + searchedsequenceformula->setText(parameters.searchedsequenceformula.c_str()); settingsfile = oldsettingsfile; if (settingsfile.toStdString().compare("") == 0) { @@ -1331,261 +1516,452 @@ void cParametersWidget::restoreParameters() { void cParametersWidget::updateSettingsWhenPeptideTypeChanged(int index) { - if (!(((eModeType)mode->currentIndex() != oldmodetype) && ((eModeType)mode->currentIndex() != dereplication) && (oldmodetype != dereplication))) { + if (!(((eModeType)mode->currentIndex() != oldmodetype) + && (((eModeType)mode->currentIndex() == denovoengine) || ((eModeType)mode->currentIndex() == singlecomparison) || ((eModeType)mode->currentIndex() == databasesearch)) + && ((oldmodetype == denovoengine) || (oldmodetype == singlecomparison) || (oldmodetype == databasesearch)) + )) { resetFragmentIonTypes(); } - switch ((ePeptideType)index) - { - case linear: - modificationsline->setDisabled(false); - modificationsbutton->setDisabled(false); - cyclicnterminus->setDisabled(false); - cycliccterminus->setDisabled(false); - internalfragments->setDisabled(true); - enablescrambling->setDisabled(true); - regularblocksorder->setDisabled(true); - searchedsequenceNtermmodif->setDisabled(false); - searchedsequenceCtermmodif->setDisabled(false); - searchedsequenceTmodif->setDisabled(true); - break; - case cyclic: - modificationsline->setDisabled(true); - modificationsbutton->setDisabled(true); - cyclicnterminus->setDisabled(true); - cycliccterminus->setDisabled(true); - internalfragments->setDisabled(true); - enablescrambling->setDisabled(false); - regularblocksorder->setDisabled(true); - searchedsequenceNtermmodif->setDisabled(true); - searchedsequenceCtermmodif->setDisabled(true); - searchedsequenceTmodif->setDisabled(true); - break; - case branched: - modificationsline->setDisabled(false); - modificationsbutton->setDisabled(false); - cyclicnterminus->setDisabled(true); - cycliccterminus->setDisabled(true); - internalfragments->setDisabled(true); - enablescrambling->setDisabled(true); - regularblocksorder->setDisabled(true); - searchedsequenceNtermmodif->setDisabled(false); - searchedsequenceCtermmodif->setDisabled(false); - searchedsequenceTmodif->setDisabled(false); - break; - case branchcyclic: - modificationsline->setDisabled(false); - modificationsbutton->setDisabled(false); - cyclicnterminus->setDisabled(true); - cycliccterminus->setDisabled(true); - internalfragments->setDisabled(false); - enablescrambling->setDisabled(true); - regularblocksorder->setDisabled(true); - searchedsequenceNtermmodif->setDisabled(true); - searchedsequenceCtermmodif->setDisabled(true); - searchedsequenceTmodif->setDisabled(false); - break; - case linearpolyketide: - modificationsline->setDisabled(false); - modificationsbutton->setDisabled(false); - cyclicnterminus->setDisabled(false); - cycliccterminus->setDisabled(false); - internalfragments->setDisabled(true); - enablescrambling->setDisabled(true); - regularblocksorder->setDisabled(false); - searchedsequenceNtermmodif->setDisabled(false); - searchedsequenceCtermmodif->setDisabled(false); - searchedsequenceTmodif->setDisabled(true); - break; - case cyclicpolyketide: - modificationsline->setDisabled(true); - modificationsbutton->setDisabled(true); - cyclicnterminus->setDisabled(true); - cycliccterminus->setDisabled(true); - internalfragments->setDisabled(true); - enablescrambling->setDisabled(true); - regularblocksorder->setDisabled(false); - searchedsequenceNtermmodif->setDisabled(true); - searchedsequenceCtermmodif->setDisabled(true); - searchedsequenceTmodif->setDisabled(true); - break; - case other: - break; - default: - break; + bool denovostate = (mode->currentIndex() == denovoengine) ? false : true; + bool sequencetagstate = (mode->currentIndex() == denovoengine) || (mode->currentIndex() == databasesearch) ? false : true; + + switch ((ePeptideType)index) { + case linear: + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(denovostate); + maximumbricksincombinationmiddle->setDisabled(denovostate); + maximumbricksincombinationend->setDisabled(denovostate); + blindedges->setDisabled(denovostate); + maximumcumulativemass->setDisabled(denovostate); + modificationsline->setDisabled(false); + modificationsbutton->setDisabled(false); + cyclicnterminus->setDisabled(false); + cycliccterminus->setDisabled(false); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(true); + sequencetag->setDisabled(sequencetagstate); + iontypes->setDisabled(false); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(false); + searchedsequenceCtermmodif->setDisabled(false); + searchedsequenceTmodif->setDisabled(true); + searchedsequenceformula ->setDisabled(true); + break; + case cyclic: + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(denovostate); + maximumbricksincombinationmiddle->setDisabled(denovostate); + maximumbricksincombinationend->setDisabled(denovostate); + blindedges->setDisabled(denovostate); + maximumcumulativemass->setDisabled(denovostate); + modificationsline->setDisabled(true); + modificationsbutton->setDisabled(true); + cyclicnterminus->setDisabled(true); + cycliccterminus->setDisabled(true); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(false); + regularblocksorder->setDisabled(true); + sequencetag->setDisabled(sequencetagstate); + iontypes->setDisabled(false); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(true); + searchedsequenceCtermmodif->setDisabled(true); + searchedsequenceTmodif->setDisabled(true); + searchedsequenceformula->setDisabled(true); + break; + case branched: + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(denovostate); + maximumbricksincombinationmiddle->setDisabled(denovostate); + maximumbricksincombinationend->setDisabled(denovostate); + blindedges->setDisabled(denovostate); + maximumcumulativemass->setDisabled(denovostate); + modificationsline->setDisabled(false); + modificationsbutton->setDisabled(false); + cyclicnterminus->setDisabled(true); + cycliccterminus->setDisabled(true); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(true); + sequencetag->setDisabled(sequencetagstate); + iontypes->setDisabled(false); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(false); + searchedsequenceCtermmodif->setDisabled(false); + searchedsequenceTmodif->setDisabled(false); + searchedsequenceformula->setDisabled(true); + break; + case branchcyclic: + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(denovostate); + maximumbricksincombinationmiddle->setDisabled(denovostate); + maximumbricksincombinationend->setDisabled(denovostate); + blindedges->setDisabled(denovostate); + maximumcumulativemass->setDisabled(denovostate); + modificationsline->setDisabled(false); + modificationsbutton->setDisabled(false); + cyclicnterminus->setDisabled(true); + cycliccterminus->setDisabled(true); + internalfragments->setDisabled(false); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(true); + sequencetag->setDisabled(sequencetagstate); + iontypes->setDisabled(false); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(true); + searchedsequenceCtermmodif->setDisabled(true); + searchedsequenceTmodif->setDisabled(false); + searchedsequenceformula->setDisabled(true); + break; + case linearpolyketide: + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(denovostate); + maximumbricksincombinationmiddle->setDisabled(denovostate); + maximumbricksincombinationend->setDisabled(denovostate); + blindedges->setDisabled(denovostate); + maximumcumulativemass->setDisabled(denovostate); + modificationsline->setDisabled(false); + modificationsbutton->setDisabled(false); + cyclicnterminus->setDisabled(false); + cycliccterminus->setDisabled(false); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(false); + sequencetag->setDisabled(sequencetagstate); + iontypes->setDisabled(false); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(false); + searchedsequenceCtermmodif->setDisabled(false); + searchedsequenceTmodif->setDisabled(true); + searchedsequenceformula->setDisabled(true); + break; + case cyclicpolyketide: + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(denovostate); + maximumbricksincombinationmiddle->setDisabled(denovostate); + maximumbricksincombinationend->setDisabled(denovostate); + blindedges->setDisabled(denovostate); + maximumcumulativemass->setDisabled(denovostate); + modificationsline->setDisabled(true); + modificationsbutton->setDisabled(true); + cyclicnterminus->setDisabled(true); + cycliccterminus->setDisabled(true); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(false); + sequencetag->setDisabled((mode->currentIndex() == denovoengine) || (mode->currentIndex() == databasesearch) ? false : true); + iontypes->setDisabled(false); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(true); + searchedsequenceCtermmodif->setDisabled(true); + searchedsequenceTmodif->setDisabled(true); + searchedsequenceformula->setDisabled(true); + break; + case other: + brickdatabaseline->setDisabled(true); + brickdatabasebutton->setDisabled(true); + maximumbricksincombinationbegin->setDisabled(true); + maximumbricksincombinationmiddle->setDisabled(true); + maximumbricksincombinationend->setDisabled(true); + blindedges->setDisabled(true); + maximumcumulativemass->setDisabled(true); + modificationsline->setDisabled(true); + modificationsbutton->setDisabled(true); + cyclicnterminus->setDisabled(true); + cycliccterminus->setDisabled(true); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(true); + sequencetag->setDisabled(true); + iontypes->setDisabled(true); + searchedsequenceline->setDisabled(true); + searchedsequencebutton->setDisabled(true); + searchedsequenceNtermmodif->setDisabled(true); + searchedsequenceCtermmodif->setDisabled(true); + searchedsequenceTmodif->setDisabled(true); + searchedsequenceformula->setDisabled(false); + break; + default: + break; } } void cParametersWidget::updateSettingsWhenModeChanged(int index) { - switch ((eModeType)index) - { - case denovoengine: - peptidetype->setDisabled(false); - scannumber->setDisabled(false); - precursormass->setDisabled(false); - precursoradduct->setDisabled(false); - precursorcharge->setDisabled(false); - precursormasserrortolerance->setDisabled(false); - fwhm->setDisabled(false); - brickdatabaseline->setDisabled(false); - brickdatabasebutton->setDisabled(false); - maximumbricksincombinationbegin->setDisabled(false); - maximumbricksincombinationmiddle->setDisabled(false); - maximumbricksincombinationend->setDisabled(false); - maximumcumulativemass->setDisabled(false); - modificationsline->setDisabled(false); - modificationsbutton->setDisabled(false); - sequencedatabaseline->setDisabled(true); - sequencedatabasebutton->setDisabled(true); - blindedges->setDisabled(false); - similaritysearch->setDisabled(true); - maximumnumberofthreads->setDisabled(false); - scoretype->setDisabled(false); - hitsreported->setDisabled(false); - sequencetag->setDisabled(false); - iontypes->setDisabled(false); - neutrallosstypes->setDisabled(false); - maximumcombinedlosses->setDisabled(false); - //clearhitswithoutparent->setDisabled(false); - reportunmatchedtheoreticalpeaks->setDisabled(false); - generateisotopepattern->setDisabled(false); - minimumpatternsize->setDisabled(false); - minimumfeaturesize->setDisabled(true); - allionsmustbepresent->setDisabled(true); - searchedsequenceline->setDisabled(false); - searchedsequencebutton->setDisabled(false); - - updateSettingsWhenPeptideTypeChanged(peptidetype->currentIndex()); - break; - case singlecomparison: - peptidetype->setDisabled(false); - scannumber->setDisabled(true); - precursormass->setDisabled(false); - precursoradduct->setDisabled(false); - precursorcharge->setDisabled(false); - precursormasserrortolerance->setDisabled(false); - fwhm->setDisabled(false); - brickdatabaseline->setDisabled(false); - brickdatabasebutton->setDisabled(false); - maximumbricksincombinationbegin->setDisabled(true); - maximumbricksincombinationmiddle->setDisabled(true); - maximumbricksincombinationend->setDisabled(true); - maximumcumulativemass->setDisabled(true); - modificationsline->setDisabled(false); - modificationsbutton->setDisabled(false); - sequencedatabaseline->setDisabled(true); - sequencedatabasebutton->setDisabled(true); - blindedges->setDisabled(true); - similaritysearch->setDisabled(true); - maximumnumberofthreads->setDisabled(true); - scoretype->setDisabled(true); - hitsreported->setDisabled(true); - sequencetag->setDisabled(true); - iontypes->setDisabled(false); - neutrallosstypes->setDisabled(false); - maximumcombinedlosses->setDisabled(false); - //clearhitswithoutparent->setDisabled(false); - reportunmatchedtheoreticalpeaks->setDisabled(false); - generateisotopepattern->setDisabled(false); - minimumpatternsize->setDisabled(false); - minimumfeaturesize->setDisabled(true); - allionsmustbepresent->setDisabled(true); - searchedsequenceline->setDisabled(false); - searchedsequencebutton->setDisabled(false); - - updateSettingsWhenPeptideTypeChanged(peptidetype->currentIndex()); - break; - case databasesearch: - peptidetype->setDisabled(false); - scannumber->setDisabled(false); - precursormass->setDisabled(false); - precursoradduct->setDisabled(false); - precursorcharge->setDisabled(false); - precursormasserrortolerance->setDisabled(false); - fwhm->setDisabled(false); - brickdatabaseline->setDisabled(false); - brickdatabasebutton->setDisabled(false); - maximumbricksincombinationbegin->setDisabled(true); - maximumbricksincombinationmiddle->setDisabled(true); - maximumbricksincombinationend->setDisabled(true); - maximumcumulativemass->setDisabled(true); - modificationsline->setDisabled(false); - modificationsbutton->setDisabled(false); - blindedges->setDisabled(true); - similaritysearch->setDisabled(false); - sequencedatabaseline->setDisabled(false); - sequencedatabasebutton->setDisabled(false); - maximumnumberofthreads->setDisabled(false); - scoretype->setDisabled(false); - hitsreported->setDisabled(false); - sequencetag->setDisabled(false); - iontypes->setDisabled(false); - neutrallosstypes->setDisabled(false); - maximumcombinedlosses->setDisabled(false); - //clearhitswithoutparent->setDisabled(false); - reportunmatchedtheoreticalpeaks->setDisabled(false); - generateisotopepattern->setDisabled(false); - minimumpatternsize->setDisabled(false); - minimumfeaturesize->setDisabled(true); - allionsmustbepresent->setDisabled(true); - searchedsequenceline->setDisabled(false); - searchedsequencebutton->setDisabled(false); - - updateSettingsWhenPeptideTypeChanged(peptidetype->currentIndex()); - break; - case dereplication: - peptidetype->setDisabled(true); - scannumber->setDisabled(true); - precursormass->setDisabled(true); - precursoradduct->setDisabled(true); - precursorcharge->setDisabled(false); - precursormasserrortolerance->setDisabled(true); - fwhm->setDisabled(false); - brickdatabaseline->setDisabled(true); - brickdatabasebutton->setDisabled(true); - maximumbricksincombinationbegin->setDisabled(true); - maximumbricksincombinationmiddle->setDisabled(true); - maximumbricksincombinationend->setDisabled(true); - maximumcumulativemass->setDisabled(true); - modificationsline->setDisabled(true); - modificationsbutton->setDisabled(true); - blindedges->setDisabled(true); - similaritysearch->setDisabled(true); - sequencedatabaseline->setDisabled(false); - sequencedatabasebutton->setDisabled(false); - maximumnumberofthreads->setDisabled(true); - scoretype->setDisabled(true); - hitsreported->setDisabled(true); - sequencetag->setDisabled(true); - iontypes->setDisabled(false); - neutrallosstypes->setDisabled(false); - maximumcombinedlosses->setDisabled(false); - //clearhitswithoutparent->setDisabled(true); - reportunmatchedtheoreticalpeaks->setDisabled(false); - generateisotopepattern->setDisabled(false); - minimumpatternsize->setDisabled(false); - minimumfeaturesize->setDisabled(false); - allionsmustbepresent->setDisabled(false); - searchedsequenceline->setDisabled(true); - searchedsequencebutton->setDisabled(true); - - resetFragmentIonTypes(); + switch ((eModeType)index) { + case denovoengine: + peptidetype->setDisabled(false); + scannumber->setDisabled(false); + precursormass->setDisabled(false); + precursoradduct->setDisabled(false); + precursorcharge->setDisabled(false); + precursormasserrortolerance->setDisabled(false); + maximummz->setDisabled(true); + fwhm->setDisabled(false); + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(false); + maximumbricksincombinationmiddle->setDisabled(false); + maximumbricksincombinationend->setDisabled(false); + blindedges->setDisabled(false); + maximumcumulativemass->setDisabled(false); + modificationsline->setDisabled(false); + modificationsbutton->setDisabled(false); + sequencedatabaseline->setDisabled(true); + sequencedatabasebutton->setDisabled(true); + similaritysearch->setDisabled(true); + maximumnumberofthreads->setDisabled(false); + scoretype->setDisabled(false); + hitsreported->setDisabled(false); + sequencetag->setDisabled(false); + iontypes->setDisabled(false); + neutrallosstypes->setDisabled(false); + maximumcombinedlosses->setDisabled(false); + //clearhitswithoutparent->setDisabled(false); + basicformulacheck->setDisabled(false); + advancedformulacheck->setDisabled(true); + noratiocheck->setDisabled(true); + mzdifftolerance->setDisabled(true); + intensitytolerance->setDisabled(true); + reportunmatchedtheoreticalpeaks->setDisabled(false); + generateisotopepattern->setDisabled(false); + minimumpatternsize->setDisabled(false); + minimumfeaturesize->setDisabled(true); + minimumiontypes->setDisabled(true); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + + updateSettingsWhenPeptideTypeChanged(peptidetype->currentIndex()); + break; + case singlecomparison: + peptidetype->setDisabled(false); + scannumber->setDisabled(true); + precursormass->setDisabled(false); + precursoradduct->setDisabled(false); + precursorcharge->setDisabled(false); + precursormasserrortolerance->setDisabled(false); + maximummz->setDisabled(true); + fwhm->setDisabled(false); + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(true); + maximumbricksincombinationmiddle->setDisabled(true); + maximumbricksincombinationend->setDisabled(true); + blindedges->setDisabled(true); + maximumcumulativemass->setDisabled(true); + modificationsline->setDisabled(false); + modificationsbutton->setDisabled(false); + sequencedatabaseline->setDisabled(true); + sequencedatabasebutton->setDisabled(true); + similaritysearch->setDisabled(true); + maximumnumberofthreads->setDisabled(true); + scoretype->setDisabled(true); + hitsreported->setDisabled(true); + sequencetag->setDisabled(true); + iontypes->setDisabled(false); + neutrallosstypes->setDisabled(false); + maximumcombinedlosses->setDisabled(false); + //clearhitswithoutparent->setDisabled(false); + basicformulacheck->setDisabled(false); + advancedformulacheck->setDisabled(true); + noratiocheck->setDisabled(true); + mzdifftolerance->setDisabled(true); + intensitytolerance->setDisabled(true); + reportunmatchedtheoreticalpeaks->setDisabled(false); + generateisotopepattern->setDisabled(false); + minimumpatternsize->setDisabled(false); + minimumfeaturesize->setDisabled(true); + minimumiontypes->setDisabled(true); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + + updateSettingsWhenPeptideTypeChanged(peptidetype->currentIndex()); + break; + case databasesearch: + peptidetype->setDisabled(false); + scannumber->setDisabled(false); + precursormass->setDisabled(false); + precursoradduct->setDisabled(false); + precursorcharge->setDisabled(false); + precursormasserrortolerance->setDisabled(false); + maximummz->setDisabled(true); + fwhm->setDisabled(false); + brickdatabaseline->setDisabled(false); + brickdatabasebutton->setDisabled(false); + maximumbricksincombinationbegin->setDisabled(true); + maximumbricksincombinationmiddle->setDisabled(true); + maximumbricksincombinationend->setDisabled(true); + blindedges->setDisabled(true); + maximumcumulativemass->setDisabled(true); + modificationsline->setDisabled(false); + modificationsbutton->setDisabled(false); + similaritysearch->setDisabled(false); + sequencedatabaseline->setDisabled(false); + sequencedatabasebutton->setDisabled(false); + maximumnumberofthreads->setDisabled(false); + scoretype->setDisabled(false); + hitsreported->setDisabled(false); + sequencetag->setDisabled(false); + iontypes->setDisabled(false); + neutrallosstypes->setDisabled(false); + maximumcombinedlosses->setDisabled(false); + //clearhitswithoutparent->setDisabled(false); + basicformulacheck->setDisabled(false); + advancedformulacheck->setDisabled(true); + noratiocheck->setDisabled(true); + mzdifftolerance->setDisabled(true); + intensitytolerance->setDisabled(true); + reportunmatchedtheoreticalpeaks->setDisabled(false); + generateisotopepattern->setDisabled(false); + minimumpatternsize->setDisabled(false); + minimumfeaturesize->setDisabled(true); + minimumiontypes->setDisabled(true); + searchedsequenceline->setDisabled(false); + searchedsequencebutton->setDisabled(false); + + updateSettingsWhenPeptideTypeChanged(peptidetype->currentIndex()); + break; + case dereplication: + peptidetype->setDisabled(true); + scannumber->setDisabled(true); + precursormass->setDisabled(true); + precursoradduct->setDisabled(true); + precursorcharge->setDisabled(false); + precursormasserrortolerance->setDisabled(true); + maximummz->setDisabled(false); + fwhm->setDisabled(false); + brickdatabaseline->setDisabled(true); + brickdatabasebutton->setDisabled(true); + maximumbricksincombinationbegin->setDisabled(true); + maximumbricksincombinationmiddle->setDisabled(true); + maximumbricksincombinationend->setDisabled(true); + blindedges->setDisabled(true); + maximumcumulativemass->setDisabled(true); + modificationsline->setDisabled(true); + modificationsbutton->setDisabled(true); + similaritysearch->setDisabled(true); + sequencedatabaseline->setDisabled(false); + sequencedatabasebutton->setDisabled(false); + maximumnumberofthreads->setDisabled(true); + scoretype->setDisabled(true); + hitsreported->setDisabled(true); + sequencetag->setDisabled(true); + iontypes->setDisabled(false); + neutrallosstypes->setDisabled(false); + maximumcombinedlosses->setDisabled(false); + //clearhitswithoutparent->setDisabled(true); + basicformulacheck->setDisabled(false); + advancedformulacheck->setDisabled(true); + noratiocheck->setDisabled(true); + mzdifftolerance->setDisabled(false); + intensitytolerance->setDisabled(false); + reportunmatchedtheoreticalpeaks->setDisabled(false); + generateisotopepattern->setDisabled(false); + minimumpatternsize->setDisabled(false); + minimumfeaturesize->setDisabled(false); + minimumiontypes->setDisabled(false); + searchedsequenceline->setDisabled(true); + searchedsequencebutton->setDisabled(true); + + if ((oldmodetype == denovoengine) || (oldmodetype == singlecomparison) || (oldmodetype == databasesearch)) { + resetFragmentIonTypes(); + } - modificationsline->setDisabled(true); - modificationsbutton->setDisabled(true); - cyclicnterminus->setDisabled(true); - cycliccterminus->setDisabled(true); - internalfragments->setDisabled(true); - enablescrambling->setDisabled(true); - regularblocksorder->setDisabled(true); - searchedsequenceNtermmodif->setDisabled(true); - searchedsequenceCtermmodif->setDisabled(true); - searchedsequenceTmodif->setDisabled(true); - break; - default: - break; + brickdatabaseline->setDisabled(true); + brickdatabasebutton->setDisabled(true); + modificationsline->setDisabled(true); + modificationsbutton->setDisabled(true); + cyclicnterminus->setDisabled(true); + cycliccterminus->setDisabled(true); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(true); + sequencetag->setDisabled(true); + iontypes->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(true); + searchedsequenceCtermmodif->setDisabled(true); + searchedsequenceTmodif->setDisabled(true); + searchedsequenceformula->setDisabled(true); + break; + case compoundsearch: + peptidetype->setDisabled(true); + scannumber->setDisabled(true); + precursormass->setDisabled(true); + precursoradduct->setDisabled(true); + precursorcharge->setDisabled(false); + precursormasserrortolerance->setDisabled(true); + maximummz->setDisabled(false); + fwhm->setDisabled(false); + brickdatabaseline->setDisabled(true); + brickdatabasebutton->setDisabled(true); + maximumbricksincombinationbegin->setDisabled(true); + maximumbricksincombinationmiddle->setDisabled(true); + maximumbricksincombinationend->setDisabled(true); + blindedges->setDisabled(true); + maximumcumulativemass->setDisabled(true); + modificationsline->setDisabled(true); + modificationsbutton->setDisabled(true); + similaritysearch->setDisabled(true); + sequencedatabaseline->setDisabled(true); + sequencedatabasebutton->setDisabled(true); + maximumnumberofthreads->setDisabled(true); + scoretype->setDisabled(true); + hitsreported->setDisabled(true); + sequencetag->setDisabled(true); + iontypes->setDisabled(false); + neutrallosstypes->setDisabled(false); + maximumcombinedlosses->setDisabled(false); + //clearhitswithoutparent->setDisabled(true); + basicformulacheck->setDisabled(false); + advancedformulacheck->setDisabled(false); + noratiocheck->setDisabled(false); + mzdifftolerance->setDisabled(false); + intensitytolerance->setDisabled(false); + reportunmatchedtheoreticalpeaks->setDisabled(false); + generateisotopepattern->setDisabled(false); + minimumpatternsize->setDisabled(false); + minimumfeaturesize->setDisabled(false); + minimumiontypes->setDisabled(false); + searchedsequenceline->setDisabled(true); + searchedsequencebutton->setDisabled(true); + + if ((oldmodetype == denovoengine) || (oldmodetype == singlecomparison) || (oldmodetype == databasesearch)) { + resetFragmentIonTypes(); + } + + brickdatabaseline->setDisabled(true); + brickdatabasebutton->setDisabled(true); + modificationsline->setDisabled(true); + modificationsbutton->setDisabled(true); + cyclicnterminus->setDisabled(true); + cycliccterminus->setDisabled(true); + internalfragments->setDisabled(true); + enablescrambling->setDisabled(true); + regularblocksorder->setDisabled(true); + sequencetag->setDisabled(true); + iontypes->setDisabled(false); + searchedsequenceNtermmodif->setDisabled(true); + searchedsequenceCtermmodif->setDisabled(true); + searchedsequenceTmodif->setDisabled(true); + searchedsequenceformula->setDisabled(true); + break; + default: + break; } oldmodetype = (eModeType)mode->currentIndex(); @@ -1596,83 +1972,83 @@ void cParametersWidget::resetFragmentIonTypes() { iontypes->getList()->clear(); eFragmentIonType start, end; - if ((eModeType)mode->currentIndex() == dereplication) { + if (((eModeType)mode->currentIndex() == dereplication) || ((eModeType)mode->currentIndex() == compoundsearch)) { start = ms_Hplus; end = ms_MGa4H; } else { switch ((ePeptideType)peptidetype->currentIndex()) { - case linear: - case branched: - start = a_ion; - end = z_ion; - break; - case cyclic: - start = a_ion; - end = c_ion; - break; - case branchcyclic: - start = a_ion; - end = z_ion; - break; - case linearpolyketide: - start = l1h_ion; - end = r2oh_ion; - break; - case cyclicpolyketide: - start = l1h_ion; // l0h_ion; - end = l2h_ion; - break; - case other: - break; - default: - break; - } - } - - for (int i = (int)start; i <= (int)end; i++) { - - iontypes->getList()->addItem(tr(parameters.iondefinitions[(eFragmentIonType)i].name.c_str())); - - if ((eModeType)mode->currentIndex() == dereplication) { - if ((eFragmentIonType)i == ms_Hplus) { - iontypes->getList()->item(i-start)->setSelected(true); - } - } - else { - switch ((ePeptideType)peptidetype->currentIndex()) { case linear: case branched: - if (((eFragmentIonType)i == b_ion) || ((eFragmentIonType)i == y_ion)) { - iontypes->getList()->item(i-start)->setSelected(true); - } + start = a_ion; + end = z_ion; break; case cyclic: - if ((eFragmentIonType)i == b_ion) { - iontypes->getList()->item(i-start)->setSelected(true); - } + start = a_ion; + end = c_ion; break; case branchcyclic: - if (((eFragmentIonType)i == b_ion) || ((eFragmentIonType)i == y_ion)) { - iontypes->getList()->item(i-start)->setSelected(true); - } + start = a_ion; + end = z_ion; break; case linearpolyketide: - if (((eFragmentIonType)i == l1h_ion) || ((eFragmentIonType)i == l2h_ion) || ((eFragmentIonType)i == r1h_ion) || ((eFragmentIonType)i == r2h_ion) || - ((eFragmentIonType)i == l1oh_ion) || ((eFragmentIonType)i == l2oh_ion) || ((eFragmentIonType)i == r1oh_ion) || ((eFragmentIonType)i == r2oh_ion) - ) { - iontypes->getList()->item(i-start)->setSelected(true); - } + start = l1h_ion; + end = r2oh_ion; break; case cyclicpolyketide: - if (/*((eFragmentIonType)i == l0h_ion) ||*/ ((eFragmentIonType)i == l1h_ion) || ((eFragmentIonType)i == l2h_ion)) { - iontypes->getList()->item(i-start)->setSelected(true); - } + start = l1h_ion; // l0h_ion; + end = l2h_ion; break; case other: - break; + return; default: break; + } + } + + for (int i = (int)start; i <= (int)end; i++) { + + iontypes->getList()->addItem(tr(parameters.iondefinitions[(eFragmentIonType)i].name.c_str())); + + if (((eModeType)mode->currentIndex() == dereplication) || ((eModeType)mode->currentIndex() == compoundsearch)) { + if ((eFragmentIonType)i == ms_Hplus) { + iontypes->getList()->item(i-start)->setSelected(true); + } + } + else { + switch ((ePeptideType)peptidetype->currentIndex()) { + case linear: + case branched: + if (((eFragmentIonType)i == b_ion) || ((eFragmentIonType)i == y_ion)) { + iontypes->getList()->item(i-start)->setSelected(true); + } + break; + case cyclic: + if ((eFragmentIonType)i == b_ion) { + iontypes->getList()->item(i-start)->setSelected(true); + } + break; + case branchcyclic: + if (((eFragmentIonType)i == b_ion) || ((eFragmentIonType)i == y_ion)) { + iontypes->getList()->item(i-start)->setSelected(true); + } + break; + case linearpolyketide: + if (((eFragmentIonType)i == l1h_ion) || ((eFragmentIonType)i == l2h_ion) || ((eFragmentIonType)i == r1h_ion) || ((eFragmentIonType)i == r2h_ion) || + ((eFragmentIonType)i == l1oh_ion) || ((eFragmentIonType)i == l2oh_ion) || ((eFragmentIonType)i == r1oh_ion) || ((eFragmentIonType)i == r2oh_ion) + ) { + iontypes->getList()->item(i-start)->setSelected(true); + } + break; + case cyclicpolyketide: + if (/*((eFragmentIonType)i == l0h_ion) ||*/ ((eFragmentIonType)i == l1h_ion) || ((eFragmentIonType)i == l2h_ion)) { + iontypes->getList()->item(i-start)->setSelected(true); + } + break; + case other: + break; + default: + break; } } diff --git a/CycloBranch/gui/cParametersWidget.h b/CycloBranch/gui/cParametersWidget.h index 09c31da..8dcabc8 100644 --- a/CycloBranch/gui/cParametersWidget.h +++ b/CycloBranch/gui/cParametersWidget.h @@ -162,8 +162,11 @@ class cParametersWidget : public QWidget QDoubleSpinBox* minimumrelativeintensitythreshold; QLabel* minimumabsoluteintensitythresholdlabel; QSpinBox* minimumabsoluteintensitythreshold; - QLabel* minimummzlabel; + QLabel* mzratiolabel; QDoubleSpinBox* minimummz; + QDoubleSpinBox* maximummz; + QHBoxLayout* mzratiolayout; + QWidget* mzratiowidget; QLabel* fwhmlabel; QDoubleSpinBox* fwhm; @@ -233,8 +236,18 @@ class cParametersWidget : public QWidget QSpinBox* minimumpatternsize; QLabel* minimumfeaturesizelabel; QSpinBox* minimumfeaturesize; - QLabel* allionsmustbepresentlabel; - QCheckBox* allionsmustbepresent; + QLabel* minimumiontypeslabel; + QSpinBox* minimumiontypes; + QLabel* basicformulachecklabel; + QCheckBox* basicformulacheck; + QLabel* advancedformulachecklabel; + QCheckBox* advancedformulacheck; + QLabel* noratiochecklabel; + QCheckBox* noratiocheck; + QLabel* mzdifftolerancelabel; + QDoubleSpinBox* mzdifftolerance; + QLabel* intensitytolerancelabel; + QDoubleSpinBox* intensitytolerance; QGroupBox* searchedsequencegroupbox; QGridLayout* searchedsequencegridlayout; @@ -243,19 +256,22 @@ class cParametersWidget : public QWidget QPushButton* searchedsequencebutton; QHBoxLayout* searchedsequencelayout; QWidget* searchedsequencewidget; - QLabel* searchedsequenceNtermmodiflabel; + QLabel* searchedsequencemodiflabel; QLineEdit* searchedsequenceNtermmodif; - QLabel* searchedsequenceCtermmodiflabel; QLineEdit* searchedsequenceCtermmodif; - QLabel* searchedsequenceTmodiflabel; QLineEdit* searchedsequenceTmodif; + QHBoxLayout* searchedsequencemodiflayout; + QWidget* searchedsequencemodifwidget; + QLabel* searchedsequenceformulalabel; + QLineEdit* searchedsequenceformula; QString lastdirloadsettings; QString lastdirsavesettings; - QString lastdirselectpeaklist; - QString lastdirselectbricksdatabase; - QString lastdirselectmodifications; - QString lastdirselectsequencedatabase; + + QString defaultdirselectpeaklist; + QString defaultdirselectbricksdatabase; + QString defaultdirselectmodifications; + QString defaultdirselectsequencedatabase; protected: diff --git a/CycloBranch/gui/cSequenceDatabaseProxyModel.cpp b/CycloBranch/gui/cSequenceDatabaseProxyModel.cpp index 8965a8f..32f1477 100644 --- a/CycloBranch/gui/cSequenceDatabaseProxyModel.cpp +++ b/CycloBranch/gui/cSequenceDatabaseProxyModel.cpp @@ -6,9 +6,14 @@ cSequenceDatabaseProxyModel::cSequenceDatabaseProxyModel(QObject *parent) : QSor } -void cSequenceDatabaseProxyModel::initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox) { - this->rowsfiltercombobox = rowsfiltercombobox; - this->rowsfiltercomparatorcombobox = rowsfiltercomparatorcombobox; +void cSequenceDatabaseProxyModel::initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2) { + filteroperator = rowsfilteroperator; + filtercombobox1 = rowsfiltercombobox1; + filtercomparatorcombobox1 = rowsfiltercomparatorcombobox1; + filterline1 = rowsfilterline1; + filtercombobox2 = rowsfiltercombobox2; + filtercomparatorcombobox2 = rowsfiltercomparatorcombobox2; + filterline2 = rowsfilterline2; } @@ -18,162 +23,71 @@ void cSequenceDatabaseProxyModel::setWholeWord(bool wholeword) { bool cSequenceDatabaseProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { - if (filterRegExp().isEmpty()) { + if (filterline1->text().isEmpty() && filterline2->text().isEmpty()) { return true; } - int col = rowsfiltercombobox->currentIndex() + 1; + int col1 = filtercombobox1->currentIndex() + 1; + int col2 = filtercombobox2->currentIndex() + 1; - if (col == 1) { + bool result1 = false; + bool result2 = false; - QString qstr = getStringFromPeptideType((ePeptideType)sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt()).c_str(); - - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (wholeword) { - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) == 0) { - return true; - } - } - else { - if (qstr.contains(filterRegExp())) { - return true; - } - } - break; - case 1: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) < 0) { - return true; - } - break; - case 2: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) <= 0) { - return true; + if (!filterline1->text().isEmpty()) { + if (col1 == 1) { + QString qstr = getStringFromPeptideType((ePeptideType)sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).toInt()).c_str(); + result1 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, qstr, filterline1->text(), sourceParent, wholeword, filterCaseSensitivity()); + } + else { + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::ByteArray) { + result1 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); } - break; - case 3: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) > 0) { - return true; + + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).toString(); + result1 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, qstr, filterline1->text(), sourceParent, wholeword, filterCaseSensitivity()); } - break; - case 4: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) >= 0) { - return true; + + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::Int) { + result1 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); } - break; - default: - break; } - } - else { - - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::ByteArray) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() == filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() < filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() <= filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() > filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() >= filterRegExp().pattern().toDouble()) { - return true; - } - break; - default: - break; - } + + if (!filterline2->text().isEmpty()) { + if (col2 == 1) { + QString qstr = getStringFromPeptideType((ePeptideType)sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).toInt()).c_str(); + result2 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, qstr, filterline2->text(), sourceParent, wholeword, filterCaseSensitivity()); } + else { + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::ByteArray) { + result2 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::String) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (wholeword) { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) == 0) { - return true; - } - } - else { - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().contains(filterRegExp())) { - return true; - } - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) < 0) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) <= 0) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) > 0) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().compare(filterRegExp().pattern(), filterCaseSensitivity()) >= 0) { - return true; - } - break; - default: - break; + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).toString(); + result2 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, qstr, filterline2->text(), sourceParent, wholeword, filterCaseSensitivity()); } - } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::Int) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() == filterRegExp().pattern().toInt()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() < filterRegExp().pattern().toInt()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() <= filterRegExp().pattern().toInt()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() > filterRegExp().pattern().toInt()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() >= filterRegExp().pattern().toInt()) { - return true; - } - break; - default: - break; + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::Int) { + result2 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); } } + } + + if (!filterline1->text().isEmpty() && filterline2->text().isEmpty()) { + return result1; + } + + if (filterline1->text().isEmpty() && !filterline2->text().isEmpty()) { + return result2; + } + if (filteroperator->currentIndex() == 0) { + return result1 || result2; } - return false; + return result1 && result2; } diff --git a/CycloBranch/gui/cSequenceDatabaseProxyModel.h b/CycloBranch/gui/cSequenceDatabaseProxyModel.h index 46067cd..bd11a88 100644 --- a/CycloBranch/gui/cSequenceDatabaseProxyModel.h +++ b/CycloBranch/gui/cSequenceDatabaseProxyModel.h @@ -9,9 +9,10 @@ #include #include -#include #include -#include "core/cFragmentIons.h" +#include +#include +#include "core/utilities.h" /** @@ -23,8 +24,13 @@ class cSequenceDatabaseProxyModel : public QSortFilterProxyModel { private: - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; + QComboBox* filteroperator; + QComboBox* filtercombobox1; + QComboBox* filtercomparatorcombobox1; + QLineEdit* filterline1; + QComboBox* filtercombobox2; + QComboBox* filtercomparatorcombobox2; + QLineEdit* filterline2; bool wholeword; public: @@ -39,10 +45,15 @@ class cSequenceDatabaseProxyModel : public QSortFilterProxyModel { /** \brief Initialize the model. - \param rowsfiltercombobox reference to the combobox with selection of columns - \param rowsfiltercomparatorcombobox reference to the combobox with selection of comparator + \param rowsfilteroperator reference to the combobox with operator selection + \param rowsfiltercombobox1 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox1 reference to the combobox with selection of comparator + \param rowsfilterline1 reference to a text field + \param rowsfiltercombobox2 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox2 reference to the combobox with selection of comparator + \param rowsfilterline2 reference to a text field */ - void initialize(QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox); + void initialize(QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2); /** diff --git a/CycloBranch/gui/cSequenceDatabaseWidget.cpp b/CycloBranch/gui/cSequenceDatabaseWidget.cpp index 2b0bc5c..904d9de 100644 --- a/CycloBranch/gui/cSequenceDatabaseWidget.cpp +++ b/CycloBranch/gui/cSequenceDatabaseWidget.cpp @@ -32,22 +32,45 @@ cSequenceDatabaseWidget::cSequenceDatabaseWidget(QWidget* parent) { menuEdit = new QMenu(tr("&Edit"), this); menuHelp = new QMenu(tr("&Help"), this); - rowsfiltercombobox = new QComboBox(); - rowsfiltercombobox->setToolTip("Column to be Searched"); - rowsfiltercombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfiltercomparatorcombobox = new QComboBox(); - rowsfiltercomparatorcombobox->setToolTip("Type of Comparison"); - rowsfiltercomparatorcombobox->addItem("="); - rowsfiltercomparatorcombobox->addItem("<"); - rowsfiltercomparatorcombobox->addItem("<="); - rowsfiltercomparatorcombobox->addItem(">"); - rowsfiltercomparatorcombobox->addItem(">="); - rowsfiltercomparatorcombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfilterline = new QLineEdit(); - rowsfilterline->setMinimumWidth(300); - rowsfilterline->setToolTip("Text to Find"); + rowsfilteroperator = new QComboBox(); + rowsfilteroperator->setToolTip("OR = any condition must be met; AND = all conditions must be met."); + rowsfilteroperator->addItem("OR"); + rowsfilteroperator->addItem("AND"); + rowsfilteroperator->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercombobox1 = new QComboBox(); + rowsfiltercombobox1->setToolTip("Column to be Searched"); + rowsfiltercombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox1 = new QComboBox(); + rowsfiltercomparatorcombobox1->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox1->addItem("="); + rowsfiltercomparatorcombobox1->addItem("<"); + rowsfiltercomparatorcombobox1->addItem("<="); + rowsfiltercomparatorcombobox1->addItem(">"); + rowsfiltercomparatorcombobox1->addItem(">="); + rowsfiltercomparatorcombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline1 = new QLineEdit(); + rowsfilterline1->setMinimumWidth(150); + rowsfilterline1->setToolTip("Text to Find"); + + rowsfiltercombobox2 = new QComboBox(); + rowsfiltercombobox2->setToolTip("Column to be Searched"); + rowsfiltercombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox2 = new QComboBox(); + rowsfiltercomparatorcombobox2->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox2->addItem("="); + rowsfiltercomparatorcombobox2->addItem("<"); + rowsfiltercomparatorcombobox2->addItem("<="); + rowsfiltercomparatorcombobox2->addItem(">"); + rowsfiltercomparatorcombobox2->addItem(">="); + rowsfiltercomparatorcombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterline2 = new QLineEdit(); + rowsfilterline2->setMinimumWidth(150); + rowsfilterline2->setToolTip("Text to Find"); rowsfiltercasesensitive = new QCheckBox(); rowsfiltercasesensitive->setToolTip("Case Sensitive"); @@ -65,11 +88,19 @@ cSequenceDatabaseWidget::cSequenceDatabaseWidget(QWidget* parent) { rowsfilterclearbutton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); rowsfilterhbox = new QHBoxLayout(); - rowsfilterhbox->addWidget(rowsfiltercombobox); + rowsfilterhbox->addWidget(rowsfiltercombobox1); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox1); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfilterline); + rowsfilterhbox->addWidget(rowsfilterline1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilteroperator); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilterline2); rowsfilterhbox->addSpacing(10); rowsfilterhbox->addWidget(rowsfiltercasesensitive); rowsfilterhbox->addSpacing(10); @@ -87,7 +118,7 @@ cSequenceDatabaseWidget::cSequenceDatabaseWidget(QWidget* parent) { proxymodel = new cSequenceDatabaseProxyModel(this); proxymodel->setSourceModel(databasemodel); proxymodel->setDynamicSortFilter(false); - proxymodel->initialize(rowsfiltercombobox, rowsfiltercomparatorcombobox); + proxymodel->initialize(rowsfilteroperator, rowsfiltercombobox1, rowsfiltercomparatorcombobox1, rowsfilterline1, rowsfiltercombobox2, rowsfiltercomparatorcombobox2, rowsfilterline2); database->setModel(proxymodel); database->setSortingEnabled(true); @@ -117,7 +148,7 @@ cSequenceDatabaseWidget::cSequenceDatabaseWidget(QWidget* parent) { actionSaveDatabase->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_S)); actionSaveDatabase->setToolTip("Save Database... (Ctrl + S)"); toolbarFile->addAction(actionSaveDatabase); - connect(actionSaveDatabase, SIGNAL(triggered()), this, SLOT(saveDatabase())); + connect(actionSaveDatabase, SIGNAL(triggered()), this, SLOT(saveDatabaseCheck())); actionSaveDatabaseAs = new QAction(QIcon(":/images/icons/86.png"), tr("Save &Database As..."), this); actionSaveDatabaseAs->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_D)); @@ -170,6 +201,8 @@ cSequenceDatabaseWidget::cSequenceDatabaseWidget(QWidget* parent) { actionHTMLDocumentation->setToolTip("Show HTML Documentation (F1)"); toolbarHelp->addAction(actionHTMLDocumentation); connect(actionHTMLDocumentation, SIGNAL(triggered()), this, SLOT(showHTMLDocumentation())); + + addToolBarBreak(); toolbarFilter = addToolBar(tr("Filter")); toolbarFilter->addWidget(rowsfilterwidget); @@ -208,7 +241,7 @@ cSequenceDatabaseWidget::cSequenceDatabaseWidget(QWidget* parent) { setCentralWidget(mainwidget); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); databasefile = ""; @@ -231,9 +264,13 @@ cSequenceDatabaseWidget::~cSequenceDatabaseWidget() { delete proxymodel; delete database; - delete rowsfiltercombobox; - delete rowsfiltercomparatorcombobox; - delete rowsfilterline; + delete rowsfilteroperator; + delete rowsfiltercombobox1; + delete rowsfiltercomparatorcombobox1; + delete rowsfilterline1; + delete rowsfiltercombobox2; + delete rowsfiltercomparatorcombobox2; + delete rowsfilterline2; delete rowsfiltercasesensitive; delete rowsfilterwholeword; delete rowsfilterbutton; @@ -314,9 +351,11 @@ void cSequenceDatabaseWidget::resetHeader() { databasemodel->setHorizontalHeaderItem(10, new QStandardItem("View")); database->setItemDelegateForColumn(10, new cViewButtonDelegate()); - rowsfiltercombobox->clear(); + rowsfiltercombobox1->clear(); + rowsfiltercombobox2->clear(); for (int i = 1; i < databasemodel->columnCount() - 1; i++) { - rowsfiltercombobox->addItem(databasemodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox1->addItem(databasemodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox2->addItem(databasemodel->horizontalHeaderItem(i)->text()); } database->horizontalHeader()->setStretchLastSection(true); @@ -378,26 +417,25 @@ bool cSequenceDatabaseWidget::checkSequence(int row) { regex rx; // [^\\[\\]]+ is used instead of .+ to prevent from a too complex regex error - switch ((ePeptideType)(databasemodel->item(row, 1)->data(Qt::DisplayRole).toInt())) - { - case linear: - case linearpolyketide: - rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; - break; - case cyclic: - case cyclicpolyketide: - rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+$"; - break; - case branched: - rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; - break; - case branchcyclic: - rx = "(^(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$|^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?$)"; - break; - case other: - default: - rx = ".*"; - break; + switch ((ePeptideType)(databasemodel->item(row, 1)->data(Qt::DisplayRole).toInt())) { + case linear: + case linearpolyketide: + rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; + break; + case cyclic: + case cyclicpolyketide: + rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+$"; + break; + case branched: + rx = "^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$"; + break; + case branchcyclic: + rx = "(^(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*$|^\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*\\\\\\(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])+\\\\\\)(\\[[^\\[\\]]+\\](-\\[[^\\[\\]]+\\])*)?$)"; + break; + case other: + default: + rx = ".*"; + break; } try { @@ -453,13 +491,13 @@ void cSequenceDatabaseWidget::setDataModified(bool datamodified) { void cSequenceDatabaseWidget::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return)) { - if (rowsfilterline->hasFocus()) { + if (rowsfilterline1->hasFocus() || rowsfilterline2->hasFocus()) { filterRows(); } } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_F)) { - rowsfilterline->setFocus(); + rowsfilterline1->setFocus(); } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_T)) { @@ -733,6 +771,18 @@ bool cSequenceDatabaseWidget::saveDatabaseAs() { } +void cSequenceDatabaseWidget::saveDatabaseCheck() { + QMessageBox::StandardButton reply; + reply = QMessageBox::question(this, appname, "Save changes ?", QMessageBox::Yes | QMessageBox::No); + + if (reply == QMessageBox::No) { + return; + } + + saveDatabase(); +} + + void cSequenceDatabaseWidget::addRow() { resetFilter(); @@ -823,12 +873,13 @@ void cSequenceDatabaseWidget::filterRows() { proxymodel->setWholeWord(rowsfilterwholeword->isChecked()); proxymodel->setFilterKeyColumn(-1); proxymodel->setFilterCaseSensitivity(rowsfiltercasesensitive->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive); - proxymodel->setFilterFixedString(rowsfilterline->text()); + proxymodel->setFilterFixedString(""); } void cSequenceDatabaseWidget::resetFilter() { - rowsfilterline->setText(""); + rowsfilterline1->setText(""); + rowsfilterline2->setText(""); database->horizontalHeader()->setSortIndicator(-1, Qt::AscendingOrder); proxymodel->sort(-1); diff --git a/CycloBranch/gui/cSequenceDatabaseWidget.h b/CycloBranch/gui/cSequenceDatabaseWidget.h index 75fee82..c76a1a3 100644 --- a/CycloBranch/gui/cSequenceDatabaseWidget.h +++ b/CycloBranch/gui/cSequenceDatabaseWidget.h @@ -105,9 +105,13 @@ class cSequenceDatabaseWidget : public QMainWindow QToolBar* toolbarFilter; QWidget* rowsfilterwidget; QHBoxLayout* rowsfilterhbox; - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; - QLineEdit* rowsfilterline; + QComboBox* rowsfilteroperator; + QComboBox* rowsfiltercombobox1; + QComboBox* rowsfiltercomparatorcombobox1; + QLineEdit* rowsfilterline1; + QComboBox* rowsfiltercombobox2; + QComboBox* rowsfiltercomparatorcombobox2; + QLineEdit* rowsfilterline2; QCheckBox* rowsfiltercasesensitive; QCheckBox* rowsfilterwholeword; QPushButton* rowsfilterbutton; @@ -160,6 +164,8 @@ private slots: bool saveDatabaseAs(); + void saveDatabaseCheck(); + void addRow(); void removeSelectedRows(); diff --git a/CycloBranch/gui/cSpectrumDetailWidget.cpp b/CycloBranch/gui/cSpectrumDetailWidget.cpp index 7742899..5551561 100644 --- a/CycloBranch/gui/cSpectrumDetailWidget.cpp +++ b/CycloBranch/gui/cSpectrumDetailWidget.cpp @@ -32,6 +32,7 @@ cSpectrumDetailWidget::cSpectrumDetailWidget() { rowid = 0; preparedToShow = false; + localneutralosses.clear(); theoreticalspectrum = new cTheoreticalSpectrum(); } @@ -50,6 +51,7 @@ cSpectrumDetailWidget& cSpectrumDetailWidget::operator=(const cSpectrumDetailWid profileintensity64precision = sd.profileintensity64precision; preparedToShow = false; + localneutralosses = sd.localneutralosses; theoreticalspectrum = new cTheoreticalSpectrum(); if (parameters && sd.theoreticalspectrum) { @@ -116,38 +118,37 @@ string cSpectrumDetailWidget::getDetailsAsHTMLString() { rname += " (" + to_string(parameters->searchedmodifications[theoreticalspectrum->getCandidate().getEndModifID()].massdifference) + " Da)"; } - switch (parameters->peptidetype) - { - case linear: - s += "

"; - s += "N-terminal Modification: " + lname + "
"; - s += "C-terminal Modification: " + rname + "
"; - break; - case cyclic: - s += "
"; - break; - case branched: - s += "

"; - s += "N-terminal Modification: " + lname + "
"; - s += "Branch Modification: " + bname + "
"; - s += "C-terminal Modification: " + rname + "
"; - break; - case branchcyclic: - s += "

"; - s += "Branch Modification: " + bname + "
"; - break; - case linearpolyketide: - s += "

"; - s += "Left Modification: " + lname + "
"; - s += "Right Modification: " + rname + "
"; - break; - case cyclicpolyketide: - s += "
"; - break; - case other: - break; - default: - break; + switch (parameters->peptidetype) { + case linear: + s += "

"; + s += "N-terminal Modification: " + lname + "
"; + s += "C-terminal Modification: " + rname + "
"; + break; + case cyclic: + s += "
"; + break; + case branched: + s += "

"; + s += "N-terminal Modification: " + lname + "
"; + s += "Branch Modification: " + bname + "
"; + s += "C-terminal Modification: " + rname + "
"; + break; + case branchcyclic: + s += "

"; + s += "Branch Modification: " + bname + "
"; + break; + case linearpolyketide: + s += "

"; + s += "Left Modification: " + lname + "
"; + s += "Right Modification: " + rname + "
"; + break; + case cyclicpolyketide: + s += "
"; + break; + case other: + break; + default: + break; } if ((int)theoreticalspectrum->getCandidate().getPathAsString().size() > 0) { @@ -175,13 +176,14 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica bool isred; string tdwidth; string desc; + QString celltext; size_t pos; if (theoreticalspectrum && parameters) { s += ""; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { columncount = 12; } @@ -200,7 +202,7 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica tdwidth = to_string(100/columncount); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { s += ""; } @@ -223,7 +225,7 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica s += ""; s += ""; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { s += ""; s += ""; @@ -269,7 +271,7 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica s += ""; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { secondspace = (int)peak->description.find(' ', peak->description.find(' ') + 1); s += printHTMLTableCell(peak->description.substr(0, secondspace), isred); } @@ -293,7 +295,7 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(peak->matchedrelativeintensity)), isred); s += printHTMLTableCell(QVariant(cropDecimalsByteArray(peak->matchedabsoluteintensity)).toString().toStdString(), isred); s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(peak->matchedppm)), isred); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(theoreticalspectrum->getTargetPatternScore(peak->groupid))), isred); s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(theoreticalspectrum->getTargetPatternFDR(peak->groupid))), isred); @@ -302,14 +304,14 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica } else { s += ""; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { s += ""; } } } - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { s += printHTMLTableCell(peak->description.substr(peak->description.rfind('(') + 1, peak->description.rfind(')') - peak->description.rfind('(') - 1), isred); langle = (int)peak->description.rfind(""); @@ -320,7 +322,16 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica tmp1 = (int)peak->description.find('<'); tmp2 = (int)peak->description.rfind(""); tmp2 += 3; - s += printHTMLTableCell(peak->description.substr(tmp1, rangle - tmp1 + 1) + "view" + peak->description.substr(langle, tmp2 - langle + 1), isred); + + celltext = peak->description.substr(tmp1, rangle - tmp1 + 1).c_str(); + if (celltext.contains("https://www.ncbi.nlm.nih.gov/pccompound?term=")) { + celltext += "search"; + } + else { + celltext += "view"; + } + celltext += peak->description.substr(langle, tmp2 - langle + 1).c_str(); + s += printHTMLTableCell(celltext.toStdString(), isred); } else { s += printHTMLTableCell(peak->description.substr(secondspace + 1, peak->description.rfind('(') - secondspace - 2), isred); @@ -368,7 +379,7 @@ string cSpectrumDetailWidget::getPeaksTableAsHTMLString(bool unmatchedtheoretica s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(peak->relativeintensity)), false); s += printHTMLTableCell(QVariant(cropDecimalsByteArray(peak->absoluteintensity)).toString().toStdString(), false); s += ""; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { s += ""; if (parameters->generateisotopepattern) { s += ""; @@ -394,11 +405,12 @@ string cSpectrumDetailWidget::getPartialPeaksTableAsHTMLString(int id, bool expo cPeak* peak; bool isred; string desc; + QString celltext; size_t pos; if (theoreticalspectrum && parameters) { - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { thpeaks = new cPeaksList(); for (int i = 0; i < (int)theoreticalspectrum->getTheoreticalPeaks()->size(); i++) { peak = &((*(theoreticalspectrum->getTheoreticalPeaks()))[i]); @@ -439,11 +451,14 @@ string cSpectrumDetailWidget::getPartialPeaksTableAsHTMLString(int id, bool expo s += ""; s += printHTMLTableCell(to_string(id + 1), isred); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { s += printHTMLTableCell(to_string(theoreticalspectrum->getExperimentalSpectrum().getCoordinateX()), isred); s += printHTMLTableCell(to_string(theoreticalspectrum->getExperimentalSpectrum().getCoordinateY()), isred); } + else { + s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(theoreticalspectrum->getExperimentalSpectrum().getRetentionTime())), isred); + } secondspace = (int)peak->description.find(' ', peak->description.find(' ') + 1); s += printHTMLTableCell(peak->description.substr(0, secondspace), isred); } @@ -452,7 +467,7 @@ string cSpectrumDetailWidget::getPartialPeaksTableAsHTMLString(int id, bool expo s += printHTMLTableCell(to_string(theoreticalspectrum->getPathId() + 1), isred); } - if (parameters->mode != dereplication) { + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { s += printHTMLTableCell(peak->description.substr(0, peak->description.find(':')), isred); } @@ -467,7 +482,7 @@ string cSpectrumDetailWidget::getPartialPeaksTableAsHTMLString(int id, bool expo s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(peak->matchedrelativeintensity)), isred); s += printHTMLTableCell(QVariant(cropDecimalsByteArray(peak->matchedabsoluteintensity)).toString().toStdString(), isred); s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(peak->matchedppm)), isred); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(theoreticalspectrum->getTargetPatternScore(peak->groupid))), isred); s += printHTMLTableCell(to_string(cropPrecisionToSixDecimals(theoreticalspectrum->getTargetPatternFDR(peak->groupid))), isred); @@ -476,14 +491,14 @@ string cSpectrumDetailWidget::getPartialPeaksTableAsHTMLString(int id, bool expo } else { s += ""; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { s += ""; } } } - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { s += printHTMLTableCell(peak->description.substr(peak->description.rfind('(') + 1, peak->description.rfind(')') - peak->description.rfind('(') - 1), isred); langle = (int)peak->description.rfind(""); @@ -494,7 +509,16 @@ string cSpectrumDetailWidget::getPartialPeaksTableAsHTMLString(int id, bool expo tmp1 = (int)peak->description.find('<'); tmp2 = (int)peak->description.rfind(""); tmp2 += 3; - s += printHTMLTableCell(peak->description.substr(tmp1, rangle - tmp1 + 1) + "view" + peak->description.substr(langle, tmp2 - langle + 1), isred); + + celltext = peak->description.substr(tmp1, rangle - tmp1 + 1).c_str(); + if (celltext.contains("https://www.ncbi.nlm.nih.gov/pccompound?term=")) { + celltext += "search"; + } + else { + celltext += "view"; + } + celltext += peak->description.substr(langle, tmp2 - langle + 1).c_str(); + s += printHTMLTableCell(celltext.toStdString(), isred); } else { s += printHTMLTableCell(peak->description.substr(secondspace + 1, peak->description.rfind('(') - secondspace - 2), isred); @@ -525,7 +549,7 @@ string cSpectrumDetailWidget::getPartialPeaksTableAsHTMLString(int id, bool expo s += ""; } - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { delete thpeaks; } @@ -587,26 +611,25 @@ cSpectrumDetailWidget::~cSpectrumDetailWidget() { if (parameters && ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch))) { - switch (parameters->peptidetype) - { - case linear: - case linearpolyketide: - delete linearwidget; - break; - case cyclic: - case cyclicpolyketide: - delete cyclicwidget; - break; - case branched: - delete branchedwidget; - break; - case branchcyclic: - delete branchcyclicwidget; - break; - case other: - break; - default: - break; + switch (parameters->peptidetype) { + case linear: + case linearpolyketide: + delete linearwidget; + break; + case cyclic: + case cyclicpolyketide: + delete cyclicwidget; + break; + case branched: + delete branchedwidget; + break; + case branchcyclic: + delete branchcyclicwidget; + break; + case other: + break; + default: + break; } } @@ -659,13 +682,27 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS if (!preparedToShow) { if (parameters) { - if ((parameters->mode == dereplication) || (parameters->mode == singlecomparison)) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { + string title = "Experimental Spectrum No. " + to_string(rowid); + if (theoreticalspectrum) { + if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { + title += " - X: " + to_string(theoreticalspectrum->getExperimentalSpectrum().getCoordinateX()); + title += " Y: " + to_string(theoreticalspectrum->getExperimentalSpectrum().getCoordinateY()); + } + else { + if (theoreticalspectrum->getExperimentalSpectrum().getRetentionTime() > 0) { + title += " - Time: " + to_string(theoreticalspectrum->getExperimentalSpectrum().getRetentionTime()); + } + } + } + setWindowTitle(title.c_str()); + } + else if (parameters->mode == singlecomparison) { setWindowTitle(("Experimental Spectrum No. " + to_string(rowid)).c_str()); } else { setWindowTitle(("Theoretical Spectrum No. " + to_string(rowid)).c_str()); } - } this->rawdata = rawdata; @@ -987,12 +1024,6 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS toolbarNeutralLoss->addWidget(neutrallosswidget); neutrallosscombobox->addItem(tr("all")); - if (parameters->neutrallossesfortheoreticalspectra.size() > 0) { - neutrallosscombobox->addItem(tr("none")); - for (int i = 0; i < (int)parameters->neutrallossesfortheoreticalspectra.size(); i++) { - neutrallosscombobox->addItem(tr(parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[i]].summary.c_str())); - } - } connect(neutrallosscombobox, SIGNAL(currentIndexChanged(QString)), spectrumscene, SLOT(neutralLossChanged(QString))); connect(neutrallosscombobox, SIGNAL(currentIndexChanged(int)), this, SLOT(filterTableAfterNeutralLossChanged(int))); @@ -1025,18 +1056,11 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS // cyclic - if (theoreticalspectrum && ((parameters->peptidetype == cyclic) || (parameters->peptidetype == cyclicpolyketide))) { - int r = (int)theoreticalspectrum->getCandidate().getAcronyms().size(); - int hint = (int)theoreticalspectrum->getVisualCoverage().size()/(2*r); - + if (theoreticalspectrum && ((parameters->peptidetype == cyclic) || (parameters->peptidetype == cyclicpolyketide))) { + vector rotationslabels = theoreticalspectrum->getLabelsOfRotations(); rotationcombobox->addItem(tr("all")); - - string s; - if (theoreticalspectrum->getVisualCoverage().size() > 0) { - for (int i = 0; i < 2*r; i++) { - s = theoreticalspectrum->getVisualCoverage()[i*hint].name.substr(0, theoreticalspectrum->getVisualCoverage()[i*hint].name.rfind('_')); - rotationcombobox->addItem(tr(s.c_str())); - } + for (auto& it : rotationslabels) { + rotationcombobox->addItem(tr(it.c_str())); } connect(rotationcombobox, SIGNAL(currentIndexChanged(int)), spectrumscene, SLOT(rotationChanged(int))); @@ -1052,12 +1076,12 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS // branched if (parameters->peptidetype == branched) { trotationcombobox->addItem(tr("all")); - trotationcombobox->addItem(tr("1 (left-to-right)")); - trotationcombobox->addItem(tr("2 (top-to-right)")); - trotationcombobox->addItem(tr("3 (right-to-left)")); - trotationcombobox->addItem(tr("4 (left-to-top)")); - trotationcombobox->addItem(tr("5 (top-to-left)")); - trotationcombobox->addItem(tr("6 (right-to-top)")); + trotationcombobox->addItem(tr("1 (N-term to C-term)")); + trotationcombobox->addItem(tr("2 (Branch to C-term)")); + trotationcombobox->addItem(tr("3 (C-term to N-term)")); + trotationcombobox->addItem(tr("4 (N-term to Branch)")); + trotationcombobox->addItem(tr("5 (Branch to N-term)")); + trotationcombobox->addItem(tr("6 (C-term to Branch)")); connect(trotationcombobox, SIGNAL(currentIndexChanged(int)), spectrumscene, SLOT(trotationChanged(int))); connect(trotationcombobox, SIGNAL(currentIndexChanged(int)), branchedwidget, SLOT(trotationChanged(int))); @@ -1070,17 +1094,10 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS // branch-cyclic if (parameters && theoreticalspectrum && (parameters->peptidetype == branchcyclic)) { - int r = (int)theoreticalspectrum->getCandidate().getAcronyms().size() - (int)theoreticalspectrum->getCandidate().getBranchSize(); - int hint = (int)theoreticalspectrum->getVisualCoverage().size()/(2*r); - + vector rotationslabels = theoreticalspectrum->getLabelsOfRotations(); rotationcombobox->addItem(tr("all")); - - string s; - if (theoreticalspectrum->getVisualCoverage().size() > 0) { - for (int i = 0; i < 2*r; i++) { - s = theoreticalspectrum->getVisualCoverage()[i*hint].name.substr(0, theoreticalspectrum->getVisualCoverage()[i*hint].name.find('_')); - rotationcombobox->addItem(tr(s.c_str())); - } + for (auto& it : rotationslabels) { + rotationcombobox->addItem(tr(it.c_str())); } connect(rotationcombobox, SIGNAL(currentIndexChanged(int)), spectrumscene, SLOT(rotationChanged(int))); @@ -1092,12 +1109,12 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS toolbarRotation->addWidget(rotationwidget); trotationcombobox->addItem(tr("all")); - trotationcombobox->addItem(tr("1 (left-to-right)")); - trotationcombobox->addItem(tr("2 (top-to-right)")); - trotationcombobox->addItem(tr("3 (right-to-left)")); - trotationcombobox->addItem(tr("4 (left-to-top)")); - trotationcombobox->addItem(tr("5 (top-to-left)")); - trotationcombobox->addItem(tr("6 (right-to-top)")); + trotationcombobox->addItem(tr("1 (N-term to C-term)")); + trotationcombobox->addItem(tr("2 (Branch to C-term)")); + trotationcombobox->addItem(tr("3 (C-term to N-term)")); + trotationcombobox->addItem(tr("4 (N-term to Branch)")); + trotationcombobox->addItem(tr("5 (Branch to N-term)")); + trotationcombobox->addItem(tr("6 (C-term to Branch)")); connect(trotationcombobox, SIGNAL(currentIndexChanged(int)), spectrumscene, SLOT(trotationChanged(int))); connect(trotationcombobox, SIGNAL(currentIndexChanged(int)), branchcyclicwidget, SLOT(trotationChanged(int))); @@ -1117,7 +1134,7 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS sizes.push_back(100); sizes.push_back(100); - if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { + if ((parameters->mode == denovoengine) || ((parameters->mode == singlecomparison) && (parameters->peptidetype != other)) || ((parameters->mode == databasesearch) && (parameters->peptidetype != other))) { switch (parameters->peptidetype) { case linear: @@ -1188,11 +1205,11 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS setMenuBar(menuBar); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); if (parameters && theoreticalspectrum) { - if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { + if ((parameters->mode == denovoengine) || ((parameters->mode == singlecomparison) && (parameters->peptidetype != other)) || ((parameters->mode == databasesearch) && (parameters->peptidetype != other))) { switch (parameters->peptidetype) { case linear: @@ -1231,6 +1248,26 @@ void cSpectrumDetailWidget::prepareToShow(QAction* actionShowIsomers, cPeakListS preparePeaksTable(); + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { + if (localneutralosses.size() > 0) { + neutrallosscombobox->addItem(tr("none")); + if (localneutralosses.size() <= 10000) { + vector tmpstrvector; + tmpstrvector.reserve(localneutralosses.size()); + for (auto& it : localneutralosses) { + tmpstrvector.push_back(it); + } + + compareStringBySize cmp; + sort(tmpstrvector.begin(), tmpstrvector.end(), cmp); + + for (auto& it : tmpstrvector) { + neutrallosscombobox->addItem(tr(it.c_str())); + } + } + } + } + } preparedToShow = true; @@ -1268,7 +1305,7 @@ void cSpectrumDetailWidget::findAll(const QString& str, QTextDocument::FindFlags QStandardItem* item; for (int i = 0; i < proxymodel->rowCount(); i++) { - for (int j = 0; j < ((parameters->mode == dereplication)?peakstablemodel->columnCount() - 1:peakstablemodel->columnCount()); j++) { + for (int j = 0; j < (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) ? peakstablemodel->columnCount() - 1 : peakstablemodel->columnCount()); j++) { item = peakstablemodel->itemFromIndex(proxymodel->mapToSource(proxymodel->index(i, j))); if (!item) { @@ -1355,6 +1392,11 @@ void cSpectrumDetailWidget::zoomToPeak(double value) { } +set& cSpectrumDetailWidget::getLocalNeutralLosses() { + return localneutralosses; +} + + void cSpectrumDetailWidget::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return)) { setMZInterval(); @@ -1399,7 +1441,7 @@ void cSpectrumDetailWidget::preparePeaksTable() { peakstable->horizontalHeader()->setSectionsMovable(true); //peakstable->verticalHeader()->setDefaultSectionSize(30); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { peakstablemodel->setColumnCount(12); } @@ -1421,7 +1463,7 @@ void cSpectrumDetailWidget::preparePeaksTable() { } int currentcolumn = 0; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { peakstablemodel->horizontalHeaderItem(currentcolumn)->setText("Pattern Type"); } @@ -1454,7 +1496,7 @@ void cSpectrumDetailWidget::preparePeaksTable() { peakstablemodel->horizontalHeaderItem(currentcolumn)->setText("Error [ppm]"); currentcolumn++; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { peakstablemodel->horizontalHeaderItem(currentcolumn)->setText("Score"); @@ -1494,7 +1536,7 @@ void cSpectrumDetailWidget::preparePeaksTable() { int thpeakscount; cPeak* peak; int secondspace, langle, rangle, tmp; - string stmp, desc; + string stmp, desc, fragname; size_t pos; QBrush brush; @@ -1534,7 +1576,7 @@ void cSpectrumDetailWidget::preparePeaksTable() { } currentcolumn = 0; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { secondspace = (int)peak->description.find(' ', peak->description.find(' ') + 1); peakstablemodel->setItem(i, currentcolumn, new QStandardItem()); @@ -1544,7 +1586,18 @@ void cSpectrumDetailWidget::preparePeaksTable() { else { peakstablemodel->setItem(i, currentcolumn, new QStandardItem()); peakstablemodel->item(i, currentcolumn)->setForeground(brush); - peakstablemodel->item(i, currentcolumn)->setText(peak->description.substr(0, peak->description.find(':')).c_str()); + fragname = peak->description.substr(0, peak->description.find(':')); + peakstablemodel->item(i, currentcolumn)->setText(fragname.c_str()); + if (fragname.rfind(" -") != string::npos) { + fragname = fragname.substr(fragname.rfind(" -") + 2); + if (fragname.find('_') != string::npos) { + fragname = fragname.substr(0, fragname.find('_')); + } + if (fragname.find(' ') != string::npos) { + fragname = fragname.substr(0, fragname.find(' ')); + } + localneutralosses.insert(fragname); + } } currentcolumn++; @@ -1583,7 +1636,7 @@ void cSpectrumDetailWidget::preparePeaksTable() { peakstablemodel->item(i, currentcolumn)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(peak->matchedppm)), Qt::DisplayRole); currentcolumn++; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { peakstablemodel->setItem(i, currentcolumn, new QStandardItem()); peakstablemodel->item(i, currentcolumn)->setForeground(brush); @@ -1599,14 +1652,14 @@ void cSpectrumDetailWidget::preparePeaksTable() { } else { currentcolumn += 4; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { currentcolumn += 2; } } } - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { peakstablemodel->setItem(i, currentcolumn, new QStandardItem()); peakstablemodel->item(i, currentcolumn)->setForeground(brush); QString summary; @@ -1726,7 +1779,7 @@ void cSpectrumDetailWidget::preparePeaksTable() { peakstable->resizeColumnToContents(i); } - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { peakstable->setColumnWidth(9, min(400, peakstable->columnWidth(9))); } @@ -1968,7 +2021,7 @@ void cSpectrumDetailWidget::openFindDialog() { void cSpectrumDetailWidget::openExportImageDialog() { - if (parameters && ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch))) { + if (parameters && ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) && (parameters->peptidetype != other)) { exportdialog->exec(); } else { @@ -2162,18 +2215,19 @@ void cSpectrumDetailWidget::filterPeaksTable() { pattern = "^"; } pattern += "((?!"; - for (int i = 0; i < (int)parameters->neutrallossesfortheoreticalspectra.size(); i++) { - pattern += "-"; - pattern += parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[i]].summary.c_str(); + for (auto& it : localneutralosses) { + pattern += " -"; + pattern += it.c_str(); pattern += "(?:$|_| )"; - if (i < (int)parameters->neutrallossesfortheoreticalspectra.size() - 1) { - pattern += "|"; - } + pattern += "|"; + } + if (localneutralosses.size() > 0) { + pattern = pattern.left(pattern.size() - 1); } pattern += ").)*$"; } else { - pattern += "-"; + pattern += " -"; pattern += neutrallosscombobox->currentText(); pattern += "(?:$|_| )"; } @@ -2252,7 +2306,181 @@ void cSpectrumDetailWidget::rawDataStateChanged(bool state) { } - if ((parameters->peaklistfileformat == imzML) && (parameters->mode == dereplication) && (imzmlprofilemetadata->size() > 0)) { + if (parameters->peaklistfileformat == dat) { + + targetid = rowid - 1; + + if ((targetid >= 0) && (targetid < rawdata->size())) { + if (state) { + string mgfname = parameters->peaklistfilename.substr(0, parameters->peaklistfilename.rfind('/')); + mgfname = mgfname.substr(0, mgfname.size() - 4); + mgfname += ".mgf"; + + peakliststream.open(mgfname); + + (*rawdata)[targetid].clear(); + (*rawdata)[targetid].loadFromMGFStream(peakliststream); + while (peakliststream.good() && (theoreticalspectrum->getExperimentalSpectrum().getTitle().compare((*rawdata)[targetid].getTitle()) != 0)) { + (*rawdata)[targetid].clear(); + (*rawdata)[targetid].loadFromMGFStream(peakliststream); + } + + if ((theoreticalspectrum->getExperimentalSpectrum().getTitle().compare((*rawdata)[targetid].getTitle()) != 0)) { + (*rawdata)[targetid].clear(); + } + + peakliststream.close(); + + progress.setValue(33); + + (*rawdata)[targetid].sortbyMass(); + (*rawdata)[targetid].normalizeIntenzityByValue(theoreticalspectrum->getExperimentalSpectrum().getMaximumAbsoluteIntensity() * 100.0 / theoreticalspectrum->getExperimentalSpectrum().getMaximumRelativeIntensity()); + (*rawdata)[targetid].cropMinimumMZRatio(parameters->minimummz, parameters->fragmentmasserrortolerance); + + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { + (*rawdata)[targetid].cropMaximumMZRatio(charge(uncharge(parameters->precursormass, parameters->precursorcharge) + maxmzoverhead, (parameters->precursorcharge > 0) ? 1 : -1), parameters->precursormasserrortolerance); + } + + progress.setValue(66); + } + else { + (*rawdata)[targetid].clear(); + } + } + + emit rawDataStateChangedSignal(state); + + } + + if (parameters->peaklistfileformat == raw) { + + if ((parameters->mode == denovoengine) || (parameters->mode == databasesearch)) { + fileid = parameters->scannumber - 1; + } + else { + fileid = rowid - 1; + } + targetid = rowid - 1; + + if ((targetid >= 0) && (targetid < rawdata->size())) { + if (state) { + cMzML mzml; + vector peaklists; + + bool terminatecomputation = false; + + string basename = parameters->peaklistfilename.substr(0, (int)parameters->peaklistfilename.size() - 3); + string mzmlname = basename + "mzML"; + + int resultcode = mzml.parse(mzmlname, peaklists, fileid, parameters->mode, 0 /* ok */, terminatecomputation /* ok */); + if ((resultcode == 0) && (peaklists.size() == 1)) { + + progress.setValue(33); + + string mgfname = basename + "profile." + to_string(fileid) + ".mgf"; + + ifstream mgfifstream; + mgfifstream.open(mgfname); + (*rawdata)[targetid].clear(); + (*rawdata)[targetid].loadFromMGFStream(mgfifstream); + mgfifstream.close(); + + QFile::remove(mgfname.c_str()); + + (*rawdata)[targetid].sortbyMass(); + (*rawdata)[targetid].normalizeIntenzityByValue(theoreticalspectrum->getExperimentalSpectrum().getMaximumAbsoluteIntensity() * 100.0 / theoreticalspectrum->getExperimentalSpectrum().getMaximumRelativeIntensity()); + (*rawdata)[targetid].cropMinimumMZRatio(parameters->minimummz, parameters->fragmentmasserrortolerance); + + progress.setValue(66); + + } + } + else { + (*rawdata)[targetid].clear(); + } + } + + emit rawDataStateChangedSignal(state); + + } + + if (parameters->peaklistfileformat == mzML) { + + if ((parameters->mode == denovoengine) || (parameters->mode == databasesearch)) { + fileid = parameters->scannumber - 1; + } + else { + fileid = rowid - 1; + } + targetid = rowid - 1; + + if ((targetid >= 0) && (targetid < rawdata->size())) { + if (state) { + cMzML mzml; + vector peaklists; + + bool terminatecomputation = false; + + string basename = parameters->peaklistfilename.substr(0, (int)parameters->peaklistfilename.size() - 4); + string mzmlname = basename + "mzML"; + + int resultcode = mzml.parse(mzmlname, peaklists, fileid, parameters->mode, 0 /* ok */, terminatecomputation /* ok */); + if ((resultcode == 0) && (peaklists.size() == 1)) { + + progress.setValue(33); + + string fname = basename + "profile." + to_string(fileid); + + string s; + #if OS_TYPE == UNX + s = installdir.toStdString() + "External/linux/correctprofile.sh " + fname + "," + to_string(parameters->fwhm); + #else + #if OS_TYPE == OSX + s = installdir.toStdString() + "External/macosx/correctprofile.sh " + fname + "," + to_string(parameters->fwhm); + #else + s = "External\\windows\\correctprofile.bat \"" + fname + "\" " + to_string(parameters->fwhm); + #endif + #endif + + progress.setValue(66); + + if (system(s.c_str()) == 0) { + mzmlname = fname + ".mzML"; + string mgfname = fname + ".0000000000.mgf"; + + cMzML correctedmzml; + peaklists.clear(); + + resultcode = correctedmzml.parse(mzmlname, peaklists, -1, singlecomparison /* ok */, 0 /* ok */, terminatecomputation /* ok */); + if ((resultcode == 0) && (peaklists.size() == 1)) { + QFile::remove(mzmlname.c_str()); + + ifstream mgfifstream; + mgfifstream.open(mgfname); + (*rawdata)[targetid].clear(); + (*rawdata)[targetid].loadFromMGFStream(mgfifstream); + mgfifstream.close(); + + QFile::remove(mgfname.c_str()); + + (*rawdata)[targetid].sortbyMass(); + (*rawdata)[targetid].normalizeIntenzityByValue(theoreticalspectrum->getExperimentalSpectrum().getMaximumAbsoluteIntensity() * 100.0 / theoreticalspectrum->getExperimentalSpectrum().getMaximumRelativeIntensity()); + (*rawdata)[targetid].cropMinimumMZRatio(parameters->minimummz, parameters->fragmentmasserrortolerance); + } + } + + } + } + else { + (*rawdata)[targetid].clear(); + } + } + + emit rawDataStateChangedSignal(state); + + } + + if ((parameters->peaklistfileformat == imzML) && ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && (imzmlprofilemetadata->size() > 0)) { targetid = rowid - 1; if ((targetid >= 0) && (targetid < rawdata->size())) { @@ -2284,7 +2512,7 @@ void cSpectrumDetailWidget::rawDataStateChanged(bool state) { mgfofstream << "BEGIN IONS" << endl; mgfofstream << "TITLE=" << endl; - mgfofstream << "SCAN=" << to_string(rowid) << endl; + mgfofstream << "SCANS=" << to_string(rowid) << endl; mgfofstream << "PEPMASS=1" << endl; mgfofstream << "RTINSECONDS=1" << endl; mgfofstream << "CHARGE=1+" << endl << endl; @@ -2322,7 +2550,7 @@ void cSpectrumDetailWidget::rawDataStateChanged(bool state) { string mzmlname = fname + ".mzML"; string mgfname = fname + ".0000000000.mgf"; - int resultcode = mzml.parse(mzmlname, peaklists, singlecomparison /* ok */, 0 /* ok */, terminatecomputation /* ok */); + int resultcode = mzml.parse(mzmlname, peaklists, -1, singlecomparison /* ok */, 0 /* ok */, terminatecomputation /* ok */); if ((resultcode == 0) && (peaklists.size() == 1)) { QFile::remove(mzmlname.c_str()); @@ -2346,7 +2574,7 @@ void cSpectrumDetailWidget::rawDataStateChanged(bool state) { emit rawDataStateChangedSignal(state); } - + } progress.setValue(maximum); @@ -2378,7 +2606,7 @@ void cSpectrumDetailWidget::hidePeakLabels(bool hide) { spectrumscene->hidePeakLabels(hide); - if (parameters && (parameters->mode != dereplication)) { + if (parameters && ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch))) { switch (parameters->peptidetype) { case linear: linearwidget->hidePeakLabels(hide); @@ -2429,7 +2657,7 @@ void cSpectrumDetailWidget::filterTableAfterTRotationChanged(int index) { void cSpectrumDetailWidget::showIsomersStateChanged() { - if (parameters->mode != dereplication) { + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { reportisomers = actionShowIsomers->isChecked(); @@ -2512,60 +2740,68 @@ void cSpectrumDetailWidget::showHTMLDocumentation() { if (parameters->mode == dereplication) { QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/dereplication.html").absoluteFilePath())); } + else if (parameters->mode == compoundsearch) { + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/compoundsearch.html").absoluteFilePath())); + } else { switch (parameters->peptidetype) { - case linear: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/lineardetail.html").absoluteFilePath())); - break; - case cyclic: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/cyclicdetail.html").absoluteFilePath())); - break; - case branched: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/brancheddetail.html").absoluteFilePath())); - break; - case branchcyclic: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/branchcyclicdetail.html").absoluteFilePath())); - break; - case linearpolyketide: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/linearketidedetail.html").absoluteFilePath())); - break; - case cyclicpolyketide: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/cyclicketidedetail.html").absoluteFilePath())); - break; - case other: - break; - default: - break; + case linear: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/lineardetail.html").absoluteFilePath())); + break; + case cyclic: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/cyclicdetail.html").absoluteFilePath())); + break; + case branched: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/brancheddetail.html").absoluteFilePath())); + break; + case branchcyclic: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/branchcyclicdetail.html").absoluteFilePath())); + break; + case linearpolyketide: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/linearketidedetail.html").absoluteFilePath())); + break; + case cyclicpolyketide: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/cyclicketidedetail.html").absoluteFilePath())); + break; + case other: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo("docs/html/metabolitedetail.html").absoluteFilePath())); + break; + default: + break; } } #else if (parameters->mode == dereplication) { QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/dereplication.html").absoluteFilePath())); } + else if (parameters->mode == compoundsearch) { + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/compoundsearch.html").absoluteFilePath())); + } else { switch (parameters->peptidetype) { - case linear: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/lineardetail.html").absoluteFilePath())); - break; - case cyclic: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/cyclicdetail.html").absoluteFilePath())); - break; - case branched: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/brancheddetail.html").absoluteFilePath())); - break; - case branchcyclic: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/branchcyclicdetail.html").absoluteFilePath())); - break; - case linearpolyketide: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/linearketidedetail.html").absoluteFilePath())); - break; - case cyclicpolyketide: - QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/cyclicketidedetail.html").absoluteFilePath())); - break; - case other: - break; - default: - break; + case linear: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/lineardetail.html").absoluteFilePath())); + break; + case cyclic: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/cyclicdetail.html").absoluteFilePath())); + break; + case branched: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/brancheddetail.html").absoluteFilePath())); + break; + case branchcyclic: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/branchcyclicdetail.html").absoluteFilePath())); + break; + case linearpolyketide: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/linearketidedetail.html").absoluteFilePath())); + break; + case cyclicpolyketide: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/cyclicketidedetail.html").absoluteFilePath())); + break; + case other: + QDesktopServices::openUrl(QUrl::fromLocalFile(QFileInfo(installdir + "docs/html/metabolitedetail.html").absoluteFilePath())); + break; + default: + break; } } #endif diff --git a/CycloBranch/gui/cSpectrumDetailWidget.h b/CycloBranch/gui/cSpectrumDetailWidget.h index 417f6b3..6093293 100644 --- a/CycloBranch/gui/cSpectrumDetailWidget.h +++ b/CycloBranch/gui/cSpectrumDetailWidget.h @@ -193,6 +193,13 @@ class cSpectrumDetailWidget : public QMainWindow void zoomToPeak(double value); + /** + \brief Get a set of local neutral losses. + \retval set get a set of local neutral losses + */ + set& getLocalNeutralLosses(); + + protected: @@ -294,6 +301,8 @@ class cSpectrumDetailWidget : public QMainWindow int rowid; bool preparedToShow; + set localneutralosses; + cParameters* parameters; cPeakListSeries* rawdata; diff --git a/CycloBranch/gui/cSpectrumSceneWidget.cpp b/CycloBranch/gui/cSpectrumSceneWidget.cpp index a2fbe20..91220ef 100644 --- a/CycloBranch/gui/cSpectrumSceneWidget.cpp +++ b/CycloBranch/gui/cSpectrumSceneWidget.cpp @@ -1,4 +1,5 @@ #include "gui/cSpectrumSceneWidget.h" +#include "gui/cSpectrumDetailWidget.h" #include #include @@ -25,6 +26,9 @@ cSpectrumSceneWidget::cSpectrumSceneWidget(QWidget* parent) { rawdatapeaklist = 0; origwidth = 0; origheight = 0; + calledbyresizeevent = false; + oldwidth.clear(); + oldheight.clear(); currentscale = 1; absoluteintensity = false; rawdatastate = false; @@ -64,6 +68,9 @@ cSpectrumSceneWidget::cSpectrumSceneWidget(QWidget* parent) { zoomsimpletextitem = new QGraphicsSimpleTextItem(); zoomgroup->addToGroup(zoomsimpletextitem); scene->addItem(zoomgroup); + + cursorsimpletextitem = new QGraphicsSimpleTextItem(); + scene->addItem(cursorsimpletextitem); } @@ -77,7 +84,7 @@ void cSpectrumSceneWidget::initialize(cParameters* parameters, cTheoreticalSpect this->theoreticalspectrum = theoreticalspectrum; if (parameters && parameters->useprofiledata) { - if ((parameters->peaklistfileformat == baf) || ((parameters->mode == dereplication) && (parameters->peaklistfileformat == imzML))) { + if ((parameters->peaklistfileformat == baf) || (parameters->peaklistfileformat == dat) || (parameters->peaklistfileformat == mzML) || (parameters->peaklistfileformat == raw) || (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && (parameters->peaklistfileformat == imzML))) { if ((rowid > 0) && (rowid <= rawdata->size())) { this->rawdatapeaklist = &((*rawdata)[rowid - 1]); } @@ -198,6 +205,7 @@ void cSpectrumSceneWidget::hidePeakLabels(bool state) { void cSpectrumSceneWidget::wheelEvent(QWheelEvent *event) { double part, newmin, newmax; + if (event->delta() > 0) { part = fabs(maxmzratio - minmzratio) / 10.0; newmin = minmzratio + part; @@ -214,8 +222,9 @@ void cSpectrumSceneWidget::wheelEvent(QWheelEvent *event) { maxmzratio = newmax; emit updateMZInterval(minmzratio, maxmzratio); redrawScene(); + viewport()->update(); } - + event->accept(); } @@ -223,8 +232,25 @@ void cSpectrumSceneWidget::wheelEvent(QWheelEvent *event) { void cSpectrumSceneWidget::mouseMoveEvent(QMouseEvent *event) { QGraphicsView::mouseMoveEvent(event); + QPointF p = mapToScene(event->x(), event->y()); + + QPointF curpos; + curpos.setX(p.x() + 15); + curpos.setY(p.y() - 2); + + double mz = getMZRatioFromXPosition((int)p.x(), origwidth); + double intensity = getIntensityFromYPosition((int)p.y(), origheight); + QString curtext = "m/z: " + QString::number(mz) + ", int: " + QString::number(intensity); + if (!absoluteintensity) { + curtext += " %"; + } + + cursorsimpletextitem->setPos(curpos); + cursorsimpletextitem->setText(curtext); + if ((pressedx != -1) && (pressedy != -1)) { - QPointF p = mapToScene(event->x(), event->y()); + cursorsimpletextitem->setVisible(false); + currentx = (int)p.x(); currenty = (int)p.y(); @@ -242,6 +268,14 @@ void cSpectrumSceneWidget::mouseMoveEvent(QMouseEvent *event) { redrawScene(); } } + else { + if (((int)p.x() >= leftmargin) && ((int)p.x() <= origwidth - rightmargin) && ((int)p.y() >= topmargin) && ((int)p.y() <= origheight - bottommargin)) { + cursorsimpletextitem->setVisible(true); + } + else { + cursorsimpletextitem->setVisible(false); + } + } event->accept(); } @@ -268,6 +302,29 @@ void cSpectrumSceneWidget::mouseReleaseEvent(QMouseEvent *event) { redrawScene(); } + QPointF p = mapToScene(event->x(), event->y()); + + QPointF curpos; + curpos.setX(p.x() + 15); + curpos.setY(p.y() - 2); + + double mz = getMZRatioFromXPosition((int)p.x(), origwidth); + double intensity = getIntensityFromYPosition((int)p.y(), origheight); + QString curtext = "m/z: " + QString::number(mz) + ", int: " + QString::number(intensity); + if (!absoluteintensity) { + curtext += " %"; + } + + cursorsimpletextitem->setPos(curpos); + cursorsimpletextitem->setText(curtext); + + if (((int)p.x() >= leftmargin) && ((int)p.x() <= origwidth - rightmargin) && ((int)p.y() >= topmargin) && ((int)p.y() <= origheight - bottommargin)) { + cursorsimpletextitem->setVisible(true); + } + else { + cursorsimpletextitem->setVisible(false); + } + event->accept(); } @@ -275,6 +332,8 @@ void cSpectrumSceneWidget::mouseReleaseEvent(QMouseEvent *event) { void cSpectrumSceneWidget::mousePressEvent(QMouseEvent *event) { QGraphicsView::mousePressEvent(event); + cursorsimpletextitem->setVisible(false); + if (event->button() == Qt::LeftButton) { QPointF p = mapToScene(event->x(), event->y()); pressedx = (int)p.x(); @@ -330,12 +389,14 @@ void cSpectrumSceneWidget::resizeEvent(QResizeEvent *event) { origwidth = (origwidth / 10) * 10; origheight = (origheight / 10) * 10; + calledbyresizeevent = true; + redrawScene(); } double cSpectrumSceneWidget::getMZRatioFromXPosition(int x, int w) { - double mz = (double)(x - leftmargin)/(double)(w - leftmargin - rightmargin)*(maxmzratio - minmzratio) + minmzratio; + double mz = (double)(x - leftmargin) / (double)(w - leftmargin - rightmargin) * (maxmzratio - minmzratio) + minmzratio; return max(0.0, mz); } @@ -348,6 +409,14 @@ int cSpectrumSceneWidget::getXPositionFromMZRatio(double mzratio, int w) { } +double cSpectrumSceneWidget::getIntensityFromYPosition(int y, int h) { + double maximumintensity = getMaximumIntensity(); + double intensity = (double)(y - topmargin) / (double)(h - topmargin - bottommargin) * maximumintensity; + intensity = maximumintensity - intensity; + return max(0.0, intensity); +} + + void cSpectrumSceneWidget::redrawScene() { QGraphicsSimpleTextItem* simpletext; QGraphicsTextItem* text; @@ -377,46 +446,20 @@ void cSpectrumSceneWidget::redrawScene() { QFont myFont("Arial", 8); QFontMetrics fm(myFont); - - - // maximum intensity in the interval - double maxintensity = 0; - double rawdatamaxintensity = 0; - - if (parameters->useprofiledata && ((parameters->peaklistfileformat == baf) || ((parameters->mode == dereplication) && (parameters->peaklistfileformat == imzML))) && rawdatastate && (rawdatapeaklist->size() > 0)) { - if (absoluteintensity) { - maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumAbsoluteIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); - } - else { - maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumRelativeIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); - } - - if (absoluteintensity) { - rawdatamaxintensity = rawdatapeaklist->getMaximumAbsoluteIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); - } - else { - rawdatamaxintensity = rawdatapeaklist->getMaximumRelativeIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); - } - if (maxintensity == 0) { - maxintensity = rawdatamaxintensity; - } - } - else { - if (absoluteintensity) { - maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumAbsoluteIntensityFromMZInterval(minmzratio, maxmzratio, hidematched, hideunmatched, parameters->peptidetype, hidescrambled); - } - else { - maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumRelativeIntensityFromMZInterval(minmzratio, maxmzratio, hidematched, hideunmatched, parameters->peptidetype, hidescrambled); - } - } - + double maxintensity = getMaximumIntensity(); scene->removeItem(zoomgroup); + scene->removeItem(cursorsimpletextitem); + scene->clear(); + zoomgroup->setVisible(false); scene->addItem(zoomgroup); + cursorsimpletextitem->setVisible(false); + scene->addItem(cursorsimpletextitem); + // x axis line = scene->addLine(leftmargin, h - bottommargin, w - rightmargin, h - bottommargin, QPen(Qt::black, 2, Qt::SolidLine)); @@ -524,7 +567,7 @@ void cSpectrumSceneWidget::redrawScene() { } // hide scrambled peaks - if ((parameters->mode != dereplication) && (parameters->peptidetype == cyclic) && hidescrambled && theoreticalspectrum->getExperimentalSpectrum()[i].scrambled) { + if (((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) && (parameters->peptidetype == cyclic) && hidescrambled && theoreticalspectrum->getExperimentalSpectrum()[i].scrambled) { continue; } @@ -537,7 +580,7 @@ void cSpectrumSceneWidget::redrawScene() { visiblepeaks[visiblepeakscount].description += "@"; } - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { visiblepeaks[visiblepeakscount].description += parameters->peakidtodesc[thpeaks[*it].descriptionid].substr(0, parameters->peakidtodesc[thpeaks[*it].descriptionid].rfind(':')); } else { @@ -576,6 +619,7 @@ void cSpectrumSceneWidget::redrawScene() { bool popit; string tmpvisibleneutralloss; size_t tmpposition; + set localneutrallosses = ((cSpectrumDetailWidget *)parent)->getLocalNeutralLosses(); for (int i = 0; i < (int)visiblepeaks.size(); i++) { x = getXPositionFromMZRatio(visiblepeaks[i].mzratio, w); @@ -599,7 +643,7 @@ void cSpectrumSceneWidget::redrawScene() { popit = false; - if (parameters->mode != dereplication) { + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { if (visibleionseriespart1.compare("") != 0) { tmppos = hits.back().find(visibleionseriespart1); @@ -632,8 +676,8 @@ void cSpectrumSceneWidget::redrawScene() { if (visibleneutralloss.compare("all") != 0) { if (visibleneutralloss.compare("none") == 0) { - for (int j = 0; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { - tmpvisibleneutralloss = "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; + for (auto& it : localneutrallosses) { + tmpvisibleneutralloss = " -" + it; tmpposition = hits.back().find(tmpvisibleneutralloss); if (tmpposition != string::npos) { tmpstr = hits.back().substr(tmpposition + tmpvisibleneutralloss.size()); @@ -645,7 +689,7 @@ void cSpectrumSceneWidget::redrawScene() { } } else { - tmpvisibleneutralloss = "-" + visibleneutralloss; + tmpvisibleneutralloss = " -" + visibleneutralloss; tmpposition = hits.back().find(tmpvisibleneutralloss); if (tmpposition == string::npos) { popit = true; @@ -694,7 +738,7 @@ void cSpectrumSceneWidget::redrawScene() { popit = false; - if (parameters->mode != dereplication) { + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { if (visibleionseriespart1.compare("") != 0) { tmppos = hits.back().find(visibleionseriespart1); @@ -727,8 +771,8 @@ void cSpectrumSceneWidget::redrawScene() { if (visibleneutralloss.compare("all") != 0) { if (visibleneutralloss.compare("none") == 0) { - for (int j = 0; j < (int)parameters->neutrallossesfortheoreticalspectra.size(); j++) { - tmpvisibleneutralloss = "-" + parameters->neutrallossesdefinitions[parameters->neutrallossesfortheoreticalspectra[j]].summary; + for (auto& it : localneutrallosses) { + tmpvisibleneutralloss = " -" + it; tmpposition = hits.back().find(tmpvisibleneutralloss); if (tmpposition != string::npos) { tmpstr = hits.back().substr(tmpposition + tmpvisibleneutralloss.size()); @@ -740,7 +784,7 @@ void cSpectrumSceneWidget::redrawScene() { } } else { - tmpvisibleneutralloss = "-" + visibleneutralloss; + tmpvisibleneutralloss = " -" + visibleneutralloss; tmpposition = hits.back().find(tmpvisibleneutralloss); if (tmpposition == string::npos) { popit = true; @@ -797,7 +841,7 @@ void cSpectrumSceneWidget::redrawScene() { text = scene->addText(""); text->setDefaultTextColor(QColor(Qt::red)); text->setFont(myFont); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { text->setTextInteractionFlags(Qt::TextBrowserInteraction); text->setOpenExternalLinks(true); } @@ -846,7 +890,7 @@ void cSpectrumSceneWidget::redrawScene() { // raw data (intersections with other objects are not tested) - if ((maxintensity > 0) && parameters->useprofiledata && ((parameters->peaklistfileformat == baf) || ((parameters->mode == dereplication) && (parameters->peaklistfileformat == imzML))) && rawdatastate && (rawdatapeaklist->size() > 0)) { + if ((maxintensity > 0) && parameters->useprofiledata && ((parameters->peaklistfileformat == baf) || (parameters->peaklistfileformat == dat) || (parameters->peaklistfileformat == mzML) || (parameters->peaklistfileformat == raw) || (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && (parameters->peaklistfileformat == imzML))) && rawdatastate && (rawdatapeaklist->size() > 0)) { QPainterPath rpath; int rx, ry, lastrx, lastry; @@ -888,10 +932,51 @@ void cSpectrumSceneWidget::redrawScene() { scene->removeItem(zoomgroup); + scene->removeItem(cursorsimpletextitem); + + if (calledbyresizeevent) { + oldwidth.push_back(origwidth); + oldheight.push_back(origheight); + } + else { + oldwidth.clear(); + oldheight.clear(); + } + + bool blocksignal = false; + // detection of cyclic calls redrawScene<->resizeEvent + if ((oldwidth.size() == 4) && (oldheight.size() == 4)) { + if ((oldwidth[3] == oldwidth[1]) && (oldheight[3] == oldheight[1]) && (oldwidth[2] == oldwidth[0]) && (oldheight[2] == oldheight[0])) { + blocksignal = true; + } + } + + if (blocksignal) { + scene->blockSignals(true); + } + scene->setSceneRect(scene->itemsBoundingRect()); + + if (blocksignal) { + scene->blockSignals(false); + } + zoomgroup->setVisible(false); scene->addItem(zoomgroup); + cursorsimpletextitem->setVisible(false); + scene->addItem(cursorsimpletextitem); + + while (oldwidth.size() > 3) { + oldwidth.pop_front(); + } + + while (oldheight.size() > 3) { + oldheight.pop_front(); + } + + calledbyresizeevent = false; + } @@ -972,6 +1057,43 @@ void cSpectrumSceneWidget::calculateMinMaxMZ() { } +double cSpectrumSceneWidget::getMaximumIntensity() { + double maxintensity = 0; + double rawdatamaxintensity = 0; + + // get the maximum intensity in the interval + if (parameters->useprofiledata && ((parameters->peaklistfileformat == baf) || (parameters->peaklistfileformat == dat) || (parameters->peaklistfileformat == mzML) || (parameters->peaklistfileformat == raw) || (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && (parameters->peaklistfileformat == imzML))) && rawdatastate && (rawdatapeaklist->size() > 0)) { + if (absoluteintensity) { + maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumAbsoluteIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); + } + else { + maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumRelativeIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); + } + + if (absoluteintensity) { + rawdatamaxintensity = rawdatapeaklist->getMaximumAbsoluteIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); + } + else { + rawdatamaxintensity = rawdatapeaklist->getMaximumRelativeIntensityFromMZInterval(minmzratio, maxmzratio, false, false, other, false); + } + + if (maxintensity == 0) { + maxintensity = rawdatamaxintensity; + } + } + else { + if (absoluteintensity) { + maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumAbsoluteIntensityFromMZInterval(minmzratio, maxmzratio, hidematched, hideunmatched, parameters->peptidetype, hidescrambled); + } + else { + maxintensity = theoreticalspectrum->getExperimentalSpectrum().getMaximumRelativeIntensityFromMZInterval(minmzratio, maxmzratio, hidematched, hideunmatched, parameters->peptidetype, hidescrambled); + } + } + + return maxintensity; +} + + void cSpectrumSceneWidget::zoomIn() { if (currentscale < 32) { currentscale += factor; @@ -1023,6 +1145,7 @@ void cSpectrumSceneWidget::setMZInterval(double minmz, double maxmz) { emit updateMZInterval(minmzratio, maxmzratio); redrawScene(); + viewport()->update(); } diff --git a/CycloBranch/gui/cSpectrumSceneWidget.h b/CycloBranch/gui/cSpectrumSceneWidget.h index 62fa5ea..b650252 100644 --- a/CycloBranch/gui/cSpectrumSceneWidget.h +++ b/CycloBranch/gui/cSpectrumSceneWidget.h @@ -164,6 +164,8 @@ class cSpectrumSceneWidget : public QGraphicsView QGraphicsRectItem* zoomrect; QGraphicsSimpleTextItem* zoomsimpletextitem; + QGraphicsSimpleTextItem* cursorsimpletextitem; + cParameters* parameters; cTheoreticalSpectrum* theoreticalspectrum; cPeaksList* rawdatapeaklist; @@ -174,6 +176,10 @@ class cSpectrumSceneWidget : public QGraphicsView int origwidth; int origheight; + bool calledbyresizeevent; + deque oldwidth; + deque oldheight; + string visibleionseriespart1; string visibleionseriespart2; string visibleneutralloss; @@ -214,6 +220,9 @@ class cSpectrumSceneWidget : public QGraphicsView int getXPositionFromMZRatio(double mzratio, int w); + double getIntensityFromYPosition(int y, int h); + + void redrawScene(); @@ -223,6 +232,9 @@ class cSpectrumSceneWidget : public QGraphicsView void calculateMinMaxMZ(); + double getMaximumIntensity(); + + signals: diff --git a/CycloBranch/gui/cSummaryPeaksTableProxyModel.cpp b/CycloBranch/gui/cSummaryPeaksTableProxyModel.cpp index 498c844..8dd745d 100644 --- a/CycloBranch/gui/cSummaryPeaksTableProxyModel.cpp +++ b/CycloBranch/gui/cSummaryPeaksTableProxyModel.cpp @@ -10,12 +10,17 @@ cSummaryPeaksTableProxyModel::cSummaryPeaksTableProxyModel(QObject *parent) : QS } -void cSummaryPeaksTableProxyModel::initialize(eModeType mode, ePeakListFileFormat peaklistfileformat, bool generateisotopepattern, QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox) { +void cSummaryPeaksTableProxyModel::initialize(eModeType mode, ePeakListFileFormat peaklistfileformat, bool generateisotopepattern, QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2) { this->mode = mode; this->peaklistfileformat = peaklistfileformat; this->generateisotopepattern = generateisotopepattern; - this->rowsfiltercombobox = rowsfiltercombobox; - this->rowsfiltercomparatorcombobox = rowsfiltercomparatorcombobox; + this->filteroperator = rowsfilteroperator; + this->filtercombobox1 = rowsfiltercombobox1; + this->filtercomparatorcombobox1 = rowsfiltercomparatorcombobox1; + this->filterline1 = rowsfilterline1; + this->filtercombobox2 = rowsfiltercombobox2; + this->filtercomparatorcombobox2 = rowsfiltercomparatorcombobox2; + this->filterline2 = rowsfilterline2; } @@ -36,7 +41,7 @@ bool cSummaryPeaksTableProxyModel::filterAcceptsRow(int sourceRow, const QModelI bool checkrow = false; int x, y; - if ((mode == dereplication) && ((peaklistfileformat == mis) || (peaklistfileformat == imzML))) { + if (((mode == dereplication) || (mode == compoundsearch)) && ((peaklistfileformat == mis) || (peaklistfileformat == imzML))) { x = sourceModel()->data(sourceModel()->index(sourceRow, 1)).toInt(); y = sourceModel()->data(sourceModel()->index(sourceRow, 2)).toInt(); @@ -52,120 +57,59 @@ bool cSummaryPeaksTableProxyModel::filterAcceptsRow(int sourceRow, const QModelI return false; } - if (filterRegExp().isEmpty()) { + if (filterline1->text().isEmpty() && filterline2->text().isEmpty()) { return true; } - int col = rowsfiltercombobox->currentIndex(); - - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::ByteArray) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() == filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() < filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() <= filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() > filterRegExp().pattern().toDouble()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toDouble() >= filterRegExp().pattern().toDouble()) { - return true; - } - break; - default: - break; + int col1 = filtercombobox1->currentIndex(); + int col2 = filtercombobox2->currentIndex(); + + bool result1 = false; + bool result2 = false; + + if (!filterline1->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::ByteArray) { + result1 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); } - } - - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::String) { - - string itemstr = sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toString().toStdString(); - QString qstr = stripHTML(itemstr).c_str(); - - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (wholeword) { - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) == 0) { - return true; - } - } - else { - if (qstr.contains(filterRegExp())) { - return true; - } - } - break; - case 1: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) < 0) { - return true; - } - break; - case 2: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) <= 0) { - return true; - } - break; - case 3: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) > 0) { - return true; - } - break; - case 4: - if (qstr.compare(filterRegExp().pattern(), filterCaseSensitivity()) >= 0) { - return true; - } - break; - default: - break; + + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).toString(); + result1 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, qstr, filterline1->text(), sourceParent, wholeword, filterCaseSensitivity()); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col1, sourceParent)).type() == QVariant::Int) { + result1 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox1->currentIndex(), sourceRow, col1, filterline1->text(), sourceParent); } } - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).type() == QVariant::Int) { - switch (rowsfiltercomparatorcombobox->currentIndex()) { - case 0: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() == filterRegExp().pattern().toInt()) { - return true; - } - break; - case 1: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() < filterRegExp().pattern().toInt()) { - return true; - } - break; - case 2: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() <= filterRegExp().pattern().toInt()) { - return true; - } - break; - case 3: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() > filterRegExp().pattern().toInt()) { - return true; - } - break; - case 4: - if (sourceModel()->data(sourceModel()->index(sourceRow, col, sourceParent)).toInt() >= filterRegExp().pattern().toInt()) { - return true; - } - break; - default: - break; + if (!filterline2->text().isEmpty()) { + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::ByteArray) { + result2 = proxyModelCheckDouble(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::String) { + QString qstr = sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).toString(); + result2 = proxyModelCheckString(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, qstr, filterline2->text(), sourceParent, wholeword, filterCaseSensitivity()); } + + if (sourceModel()->data(sourceModel()->index(sourceRow, col2, sourceParent)).type() == QVariant::Int) { + result2 = proxyModelCheckInt(sourceModel(), filtercomparatorcombobox2->currentIndex(), sourceRow, col2, filterline2->text(), sourceParent); + } + } + + if (!filterline1->text().isEmpty() && filterline2->text().isEmpty()) { + return result1; + } + + if (filterline1->text().isEmpty() && !filterline2->text().isEmpty()) { + return result2; + } + + if (filteroperator->currentIndex() == 0) { + return result1 || result2; } - return false; + return result1 && result2; } diff --git a/CycloBranch/gui/cSummaryPeaksTableProxyModel.h b/CycloBranch/gui/cSummaryPeaksTableProxyModel.h index 3adaaef..36b1c82 100644 --- a/CycloBranch/gui/cSummaryPeaksTableProxyModel.h +++ b/CycloBranch/gui/cSummaryPeaksTableProxyModel.h @@ -11,6 +11,7 @@ #include #include #include +#include #include "core/cParameters.h" @@ -26,10 +27,16 @@ class cSummaryPeaksTableProxyModel : public QSortFilterProxyModel { eModeType mode; ePeakListFileFormat peaklistfileformat; bool generateisotopepattern; - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; + QComboBox* filteroperator; + QComboBox* filtercombobox1; + QComboBox* filtercomparatorcombobox1; + QLineEdit* filterline1; + QComboBox* filtercombobox2; + QComboBox* filtercomparatorcombobox2; + QLineEdit* filterline2; bool wholeword; + public: /** @@ -68,10 +75,15 @@ class cSummaryPeaksTableProxyModel : public QSortFilterProxyModel { \param mode program mode \param peaklistfileformat peaklist format \param generateisotopepattern true if full isotope patterns are generated; false otherwise - \param rowsfiltercombobox reference to the combobox with selection of columns - \param rowsfiltercomparatorcombobox reference to the combobox with selection of comparator - */ - void initialize(eModeType mode, ePeakListFileFormat peaklistfileformat, bool generateisotopepattern, QComboBox* rowsfiltercombobox, QComboBox* rowsfiltercomparatorcombobox); + \param rowsfilteroperator reference to the combobox with operator selection + \param rowsfiltercombobox1 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox1 reference to the combobox with selection of comparator + \param rowsfilterline1 reference to a text field + \param rowsfiltercombobox2 reference to the combobox with selection of columns + \param rowsfiltercomparatorcombobox2 reference to the combobox with selection of comparator + \param rowsfilterline2 reference to a text field + */ + void initialize(eModeType mode, ePeakListFileFormat peaklistfileformat, bool generateisotopepattern, QComboBox* rowsfilteroperator, QComboBox* rowsfiltercombobox1, QComboBox* rowsfiltercomparatorcombobox1, QLineEdit* rowsfilterline1, QComboBox* rowsfiltercombobox2, QComboBox* rowsfiltercomparatorcombobox2, QLineEdit* rowsfilterline2); /** diff --git a/CycloBranch/gui/cSummaryPeaksTableWidget.cpp b/CycloBranch/gui/cSummaryPeaksTableWidget.cpp index 4768a74..cd01924 100644 --- a/CycloBranch/gui/cSummaryPeaksTableWidget.cpp +++ b/CycloBranch/gui/cSummaryPeaksTableWidget.cpp @@ -23,9 +23,11 @@ cSummaryPeaksTableWidget::cSummaryPeaksTableWidget(QWidget* parent) { + title = "Summary Table of Matched Peaks"; + this->parent = parent; - setWindowTitle("Summary Table of Matched Peaks"); + setWindowTitle(title); setWindowIcon(QIcon(":/images/icons/43.png")); menuBar = new QMenuBar(this); @@ -33,22 +35,71 @@ cSummaryPeaksTableWidget::cSummaryPeaksTableWidget(QWidget* parent) { menuFile = new QMenu(tr("&File"), this); menuHelp = new QMenu(tr("&Help"), this); - rowsfiltercombobox = new QComboBox(); - rowsfiltercombobox->setToolTip("Column to be Searched"); - rowsfiltercombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfiltercomparatorcombobox = new QComboBox(); - rowsfiltercomparatorcombobox->setToolTip("Type of Comparison"); - rowsfiltercomparatorcombobox->addItem("="); - rowsfiltercomparatorcombobox->addItem("<"); - rowsfiltercomparatorcombobox->addItem("<="); - rowsfiltercomparatorcombobox->addItem(">"); - rowsfiltercomparatorcombobox->addItem(">="); - rowsfiltercomparatorcombobox->setSizeAdjustPolicy(QComboBox::AdjustToContents); - - rowsfilterline = new QLineEdit(); - rowsfilterline->setMinimumWidth(300); - rowsfilterline->setToolTip("Text to Find"); + rowsfilteroperator = new QComboBox(); + rowsfilteroperator->setToolTip("OR = any condition must be met; AND = all conditions must be met."); + rowsfilteroperator->addItem("OR"); + rowsfilteroperator->addItem("AND"); + rowsfilteroperator->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercombobox1 = new QComboBox(); + rowsfiltercombobox1->setToolTip("Column to be Searched"); + rowsfiltercombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox1 = new QComboBox(); + rowsfiltercomparatorcombobox1->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox1->addItem("="); + rowsfiltercomparatorcombobox1->addItem("<"); + rowsfiltercomparatorcombobox1->addItem("<="); + rowsfiltercomparatorcombobox1->addItem(">"); + rowsfiltercomparatorcombobox1->addItem(">="); + rowsfiltercomparatorcombobox1->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterstringlistmodel1 = new QStringListModel(); + rowsfilterlinecompleter1 = new QCompleter(); + rowsfilterlinecompleter1->setModel(rowsfilterstringlistmodel1); + rowsfilterlinecompleter1->setCaseSensitivity(Qt::CaseInsensitive); + rowsfilterlinecompleter1->setCompletionMode(QCompleter::UnfilteredPopupCompletion); + + rowsfilterline1 = new QLineEdit(); + rowsfilterline1->setMinimumWidth(150); + rowsfilterline1->setToolTip("Text to Find"); + rowsfilterline1->setCompleter(rowsfilterlinecompleter1); + + rowsfilterleft1 = new QPushButton("<"); + rowsfilterleft1->setMaximumWidth(25); + + rowsfilterright1 = new QPushButton(">"); + rowsfilterright1->setMaximumWidth(25); + + rowsfiltercombobox2 = new QComboBox(); + rowsfiltercombobox2->setToolTip("Column to be Searched"); + rowsfiltercombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfiltercomparatorcombobox2 = new QComboBox(); + rowsfiltercomparatorcombobox2->setToolTip("Type of Comparison"); + rowsfiltercomparatorcombobox2->addItem("="); + rowsfiltercomparatorcombobox2->addItem("<"); + rowsfiltercomparatorcombobox2->addItem("<="); + rowsfiltercomparatorcombobox2->addItem(">"); + rowsfiltercomparatorcombobox2->addItem(">="); + rowsfiltercomparatorcombobox2->setSizeAdjustPolicy(QComboBox::AdjustToContents); + + rowsfilterstringlistmodel2 = new QStringListModel(); + rowsfilterlinecompleter2 = new QCompleter(); + rowsfilterlinecompleter2->setModel(rowsfilterstringlistmodel2); + rowsfilterlinecompleter2->setCaseSensitivity(Qt::CaseInsensitive); + rowsfilterlinecompleter2->setCompletionMode(QCompleter::UnfilteredPopupCompletion); + + rowsfilterline2 = new QLineEdit(); + rowsfilterline2->setMinimumWidth(150); + rowsfilterline2->setToolTip("Text to Find"); + rowsfilterline2->setCompleter(rowsfilterlinecompleter2); + + rowsfilterleft2 = new QPushButton("<"); + rowsfilterleft2->setMaximumWidth(25); + + rowsfilterright2 = new QPushButton(">"); + rowsfilterright2->setMaximumWidth(25); rowsfiltercasesensitive = new QCheckBox(); rowsfiltercasesensitive->setToolTip("Case Sensitive"); @@ -66,11 +117,23 @@ cSummaryPeaksTableWidget::cSummaryPeaksTableWidget(QWidget* parent) { rowsfilterclearbutton->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_R)); rowsfilterhbox = new QHBoxLayout(); - rowsfilterhbox->addWidget(rowsfiltercombobox); + rowsfilterhbox->addWidget(rowsfiltercombobox1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilterline1); + rowsfilterhbox->addWidget(rowsfilterleft1); + rowsfilterhbox->addWidget(rowsfilterright1); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilteroperator); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox); + rowsfilterhbox->addWidget(rowsfiltercombobox2); rowsfilterhbox->addSpacing(10); - rowsfilterhbox->addWidget(rowsfilterline); + rowsfilterhbox->addWidget(rowsfiltercomparatorcombobox2); + rowsfilterhbox->addSpacing(10); + rowsfilterhbox->addWidget(rowsfilterline2); + rowsfilterhbox->addWidget(rowsfilterleft2); + rowsfilterhbox->addWidget(rowsfilterright2); rowsfilterhbox->addSpacing(10); rowsfilterhbox->addWidget(rowsfiltercasesensitive); rowsfilterhbox->addSpacing(10); @@ -141,6 +204,11 @@ cSummaryPeaksTableWidget::cSummaryPeaksTableWidget(QWidget* parent) { setMenuBar(menuBar); + connect(rowsfilterleft1, SIGNAL(released()), this, SLOT(rowsFilterLeft1Slot())); + connect(rowsfilterright1, SIGNAL(released()), this, SLOT(rowsFilterRight1Slot())); + connect(rowsfilterleft2, SIGNAL(released()), this, SLOT(rowsFilterLeft2Slot())); + connect(rowsfilterright2, SIGNAL(released()), this, SLOT(rowsFilterRight2Slot())); + connect(rowsfilterbutton, SIGNAL(released()), this, SLOT(filterRows())); connect(rowsfilterclearbutton, SIGNAL(released()), this, SLOT(resetFilter())); @@ -152,7 +220,7 @@ cSummaryPeaksTableWidget::cSummaryPeaksTableWidget(QWidget* parent) { setCentralWidget(mainwidget); - resize(1280, 780); + resize(defaultwinsizex, defaultwinsizey); lastdirexporttocsv = "./"; lastdirexportstatisticstocsv = "./"; @@ -164,9 +232,21 @@ cSummaryPeaksTableWidget::cSummaryPeaksTableWidget(QWidget* parent) { cSummaryPeaksTableWidget::~cSummaryPeaksTableWidget() { deleteTable(); - delete rowsfiltercombobox; - delete rowsfiltercomparatorcombobox; - delete rowsfilterline; + delete rowsfilteroperator; + delete rowsfiltercombobox1; + delete rowsfiltercomparatorcombobox1; + delete rowsfilterstringlistmodel1; + delete rowsfilterlinecompleter1; + delete rowsfilterline1; + delete rowsfilterleft1; + delete rowsfilterright1; + delete rowsfiltercombobox2; + delete rowsfiltercomparatorcombobox2; + delete rowsfilterstringlistmodel2; + delete rowsfilterlinecompleter2; + delete rowsfilterline2; + delete rowsfilterleft2; + delete rowsfilterright2; delete rowsfiltercasesensitive; delete rowsfilterwholeword; delete rowsfilterbutton; @@ -231,7 +311,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard if (thpeakscount > 1000000) { QMessageBox::StandardButton reply; - string msg = "The table contains " + to_string(thpeakscount) + " rows and might not fit into the main memory. Do you with to continue ?\n\nTip: Re-run the search using adjusted search settings to limit the number of rows. You may increase the minimum threshold of relative peak intensity, the minimum m/z ratio, decrease the m/z error tolerance or limit the number of selected ion types in theoretical spectra."; + string msg = "The table contains " + to_string(thpeakscount) + " rows and might not fit into the main memory. Do you wish to continue ?\n\nTip: Re-run the search using adjusted search settings to limit the number of rows. You may increase the minimum threshold of relative peak intensity, the minimum m/z ratio, decrease the m/z error tolerance or limit the number of selected ion types in theoretical spectra."; reply = QMessageBox::question(this, appname, msg.c_str(), QMessageBox::Yes | QMessageBox::No); if (reply == QMessageBox::No) { return false; @@ -242,12 +322,12 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard resetFilter(); deleteTable(); - proxymodel->initialize(parameters->mode, parameters->peaklistfileformat, parameters->generateisotopepattern, rowsfiltercombobox, rowsfiltercomparatorcombobox); + proxymodel->initialize(parameters->mode, parameters->peaklistfileformat, parameters->generateisotopepattern, rowsfilteroperator, rowsfiltercombobox1, rowsfiltercomparatorcombobox1, rowsfilterline1, rowsfiltercombobox2, rowsfiltercomparatorcombobox2, rowsfilterline2); coordinates.clear(); // prepare the header - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { if (parameters->generateisotopepattern) { databasemodel->setColumnCount(15); @@ -258,10 +338,10 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard } else { if (parameters->generateisotopepattern) { - databasemodel->setColumnCount(13); + databasemodel->setColumnCount(14); } else { - databasemodel->setColumnCount(10); + databasemodel->setColumnCount(11); } } } @@ -287,7 +367,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard database->setItemDelegateForColumn(0, new QItemDelegate()); int currentcolumn = 1; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { iontypecol = 3; @@ -301,6 +381,12 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard database->setItemDelegateForColumn(currentcolumn, new QItemDelegate()); currentcolumn++; } + else { + databasemodel->setHorizontalHeaderItem(currentcolumn, new QStandardItem()); + databasemodel->horizontalHeaderItem(currentcolumn)->setText("Time"); + database->setItemDelegateForColumn(currentcolumn, new QItemDelegate()); + currentcolumn++; + } databasemodel->setHorizontalHeaderItem(currentcolumn, new QStandardItem()); if (parameters->generateisotopepattern) { @@ -320,7 +406,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard currentcolumn++; } - if (parameters->mode != dereplication) { + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { databasemodel->setHorizontalHeaderItem(currentcolumn, new QStandardItem()); databasemodel->horizontalHeaderItem(currentcolumn)->setText("Fragment Type"); database->setItemDelegateForColumn(currentcolumn, new QItemDelegate()); @@ -359,7 +445,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard database->setItemDelegateForColumn(currentcolumn, new QItemDelegate()); currentcolumn++; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { databasemodel->setHorizontalHeaderItem(currentcolumn, new QStandardItem()); databasemodel->horizontalHeaderItem(currentcolumn)->setText("Score"); @@ -409,14 +495,25 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard currentcolumn++; } - rowsfiltercombobox->clear(); + rowsfiltercombobox1->clear(); + rowsfiltercombobox2->clear(); for (int i = 0; i < databasemodel->columnCount(); i++) { database->resizeColumnToContents(i); - if ((parameters->mode != dereplication) || ((parameters->mode == dereplication) && (i < databasemodel->columnCount() - 1))) { - rowsfiltercombobox->addItem(databasemodel->horizontalHeaderItem(i)->text()); + if (((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) || + (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && (i < databasemodel->columnCount() - 1))) { + rowsfiltercombobox1->addItem(databasemodel->horizontalHeaderItem(i)->text()); + rowsfiltercombobox2->addItem(databasemodel->horizontalHeaderItem(i)->text()); } } + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { + rowsfiltercombobox1->setCurrentIndex(rowsfiltercombobox1->count() - 1); + rowsfiltercombobox2->setCurrentIndex(rowsfiltercombobox2->count() - 1); + + rowsfiltercomparatorcombobox1->setCurrentIndex(0); + rowsfiltercomparatorcombobox2->setCurrentIndex(0); + } + // fill new data QProgressDialog* progress; @@ -444,10 +541,12 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard QBrush brush; brush.setColor(QColor(0, 0, 0)); + set completernameset; + for (int i = 0; i < spectracount; i++) { if (!resultsproxymodel->mapFromSource(resultsstandardmodel->index(i, 0)).isValid()) { - if ((parameters->mode == dereplication) && (parameters->peaklistfileformat != mis) && (parameters->peaklistfileformat != imzML)) { + if (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && (parameters->peaklistfileformat != mis) && (parameters->peaklistfileformat != imzML)) { cPeak emptypeak; emptypeak.mzratio = (double)(eicchromatogram.size() + 1); emptypeak.absoluteintensity = 0; @@ -458,7 +557,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard spectrumindex = resultsstandardmodel->item(i, 1)->data(Qt::DisplayRole).toInt() - 1; - if ((parameters->mode == dereplication) && (parameters->peaklistfileformat != mis) && (parameters->peaklistfileformat != imzML)) { + if (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && (parameters->peaklistfileformat != mis) && (parameters->peaklistfileformat != imzML)) { addEICPeak(eicchromatogram, (*spectralist)[spectrumindex].getExperimentalSpectrum()); } @@ -496,7 +595,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard databasemodel->item(currentrow, currentcolumn)->setData(QVariant::fromValue(spectrumindex + 1), Qt::DisplayRole); currentcolumn++; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { databasemodel->setItem(currentrow, currentcolumn, new QStandardItem()); databasemodel->item(currentrow, currentcolumn)->setForeground(brush); @@ -510,6 +609,13 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard coordinates.push_back(cCoordinates((*spectralist)[spectrumindex].getExperimentalSpectrum().getCoordinateX(), (*spectralist)[spectrumindex].getExperimentalSpectrum().getCoordinateY(), spectrumindex + 1, cropPrecisionToSixDecimals(peak->matchedmz), cropPrecisionToSixDecimals(peak->matchedrelativeintensity), peak->matchedabsoluteintensity)); } + else { + databasemodel->setItem(currentrow, currentcolumn, new QStandardItem()); + databasemodel->item(currentrow, currentcolumn)->setForeground(brush); + databasemodel->item(currentrow, currentcolumn)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray((*spectralist)[spectrumindex].getExperimentalSpectrum().getRetentionTime())), Qt::DisplayRole); + currentcolumn++; + } + secondspace = (int)peak->description.find(' ', peak->description.find(' ') + 1); databasemodel->setItem(currentrow, currentcolumn, new QStandardItem()); databasemodel->item(currentrow, currentcolumn)->setForeground(brush); @@ -524,7 +630,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard currentcolumn++; } - if (parameters->mode != dereplication) { + if ((parameters->mode == denovoengine) || (parameters->mode == singlecomparison) || (parameters->mode == databasesearch)) { databasemodel->setItem(currentrow, currentcolumn, new QStandardItem()); databasemodel->item(currentrow, currentcolumn)->setForeground(brush); databasemodel->item(currentrow, currentcolumn)->setText(peak->description.substr(0, peak->description.find(':')).c_str()); @@ -563,7 +669,7 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard databasemodel->item(currentrow, currentcolumn)->setData(QVariant::fromValue(cropPrecisionToSixDecimalsByteArray(peak->matchedppm)), Qt::DisplayRole); currentcolumn++; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if (parameters->generateisotopepattern) { databasemodel->setItem(currentrow, currentcolumn, new QStandardItem()); databasemodel->item(currentrow, currentcolumn)->setForeground(brush); @@ -576,17 +682,24 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard currentcolumn++; } + stmp = peak->description.substr(peak->description.rfind('(') + 1, peak->description.rfind(')') - peak->description.rfind('(') - 1); + databasemodel->setItem(currentrow, currentcolumn, new QStandardItem()); databasemodel->item(currentrow, currentcolumn)->setForeground(brush); - databasemodel->item(currentrow, currentcolumn)->setText(peak->description.substr(peak->description.rfind('(') + 1, peak->description.rfind(')') - peak->description.rfind('(') - 1).c_str()); + databasemodel->item(currentrow, currentcolumn)->setText(stmp.c_str()); currentcolumn++; langle = (int)peak->description.rfind(""); rangle = (int)peak->description.find('>'); if ((langle != string::npos) && (rangle != string::npos)) { + stmp = peak->description.substr(rangle + 1, langle - rangle - 1); + databasemodel->setItem(currentrow, currentcolumn, new QStandardItem()); databasemodel->item(currentrow, currentcolumn)->setForeground(brush); - databasemodel->item(currentrow, currentcolumn)->setText(peak->description.substr(rangle + 1, langle - rangle - 1).c_str()); + databasemodel->item(currentrow, currentcolumn)->setText(stmp.c_str()); + + completernameset.insert(stmp.c_str()); + if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { coordinates.back().name = databasemodel->item(currentrow, iontypecol)->text().toStdString() + " "; if (databasemodel->item(currentrow, currentcolumn)->text().length() > 40) { @@ -674,10 +787,10 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard database->resizeColumnToContents(i); } - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { emit resetRegion(); - emit sendFilterOptionsToImageWindow(coordinates, rowsfiltercombobox->currentText().toStdString(), rowsfiltercomparatorcombobox->currentText().toStdString(), rowsfilterline->text().toStdString(), rowsfiltercasesensitive->isChecked(), rowsfilterwholeword->isChecked()); + emit sendFilterOptionsToImageWindow(coordinates, (bool)rowsfilteroperator->currentIndex(), rowsfiltercombobox1->currentText().toStdString(), rowsfiltercomparatorcombobox1->currentText().toStdString(), rowsfilterline1->text().toStdString(), rowsfiltercombobox2->currentText().toStdString(), rowsfiltercomparatorcombobox2->currentText().toStdString(), rowsfilterline2->text().toStdString(), rowsfiltercasesensitive->isChecked(), rowsfilterwholeword->isChecked()); if (parameters->generateisotopepattern) { database->setColumnWidth(12, min(400, database->columnWidth(12))); @@ -692,10 +805,10 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard emit sendFilterOptionsToChromatogram(eicchromatogram); if (parameters->generateisotopepattern) { - database->setColumnWidth(10, min(400, database->columnWidth(10))); + database->setColumnWidth(11, min(400, database->columnWidth(11))); } else { - database->setColumnWidth(7, min(400, database->columnWidth(7))); + database->setColumnWidth(8, min(400, database->columnWidth(8))); } } } @@ -709,8 +822,19 @@ bool cSummaryPeaksTableWidget::prepareToShow(QStandardItemModel* resultsstandard database->setColumnWidth(8, min(400, database->columnWidth(8))); } } + + QStringList completerlist; + if (completernameset.size() <= 10000) { + for (auto& it : completernameset) { + completerlist.push_back(it); + } + } + rowsfilterstringlistmodel1->setStringList(completerlist); + rowsfilterstringlistmodel2->setStringList(completerlist); } + setWindowTitle(title); + progress->setValue(spectracount); delete progress; @@ -754,7 +878,7 @@ void cSummaryPeaksTableWidget::addEICPeak(cPeaksList& eicchromatogram, cPeaksLis void cSummaryPeaksTableWidget::keyPressEvent(QKeyEvent *event) { if ((event->key() == Qt::Key_Enter) || (event->key() == Qt::Key_Return)) { - if (rowsfilterline->hasFocus()) { + if (rowsfilterline1->hasFocus() || rowsfilterline2->hasFocus()) { filterRows(); } else { @@ -765,7 +889,7 @@ void cSummaryPeaksTableWidget::keyPressEvent(QKeyEvent *event) { } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_F)) { - rowsfilterline->setFocus(); + rowsfilterline1->setFocus(); } if ((event->modifiers() == Qt::ControlModifier) && (event->key() == Qt::Key_T)) { @@ -814,15 +938,17 @@ void cSummaryPeaksTableWidget::closeWindow() { void cSummaryPeaksTableWidget::filterRows() { + setWindowTitle(title); + Qt::CaseSensitivity casesensitive = rowsfiltercasesensitive->isChecked()?Qt::CaseSensitive:Qt::CaseInsensitive; - QString str = rowsfilterline->text(); + QString str = ""; int i, id, x, y; int iontypecol, mzcol, relintcol, absintcol, namecol; cPeaksList eicchromatogram; eicchromatogram.clear(); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { iontypecol = 3; if (parameters->generateisotopepattern) { @@ -840,10 +966,10 @@ void cSummaryPeaksTableWidget::filterRows() { } else { if (parameters->generateisotopepattern) { - absintcol = 6; + absintcol = 7; } else { - absintcol = 5; + absintcol = 6; } eicchromatogram = origeicchromatogram; @@ -869,7 +995,7 @@ void cSummaryPeaksTableWidget::filterRows() { // prepare data for visualization coordinates.clear(); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { int proxymodelrowcount = proxymodel->rowCount(); for (i = 0; i < proxymodelrowcount; i++) { @@ -918,9 +1044,9 @@ void cSummaryPeaksTableWidget::filterRows() { } } - if ((parameters->mode == dereplication) && !progress.wasCanceled()) { + if (((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) && !progress.wasCanceled()) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { - emit sendFilterOptionsToImageWindow(coordinates, rowsfiltercombobox->currentText().toStdString(), rowsfiltercomparatorcombobox->currentText().toStdString(), rowsfilterline->text().toStdString(), rowsfiltercasesensitive->isChecked(), rowsfilterwholeword->isChecked()); + emit sendFilterOptionsToImageWindow(coordinates, (bool)rowsfilteroperator->currentIndex(), rowsfiltercombobox1->currentText().toStdString(), rowsfiltercomparatorcombobox1->currentText().toStdString(), rowsfilterline1->text().toStdString(), rowsfiltercombobox2->currentText().toStdString(), rowsfiltercomparatorcombobox2->currentText().toStdString(), rowsfilterline2->text().toStdString(), rowsfiltercasesensitive->isChecked(), rowsfilterwholeword->isChecked()); } else { eicchromatogram.normalizeIntenzity(); @@ -933,7 +1059,10 @@ void cSummaryPeaksTableWidget::filterRows() { void cSummaryPeaksTableWidget::resetFilter() { - rowsfilterline->setText(""); + setWindowTitle(title); + + rowsfilterline1->setText(""); + rowsfilterline2->setText(""); int rowcount = databasemodel->rowCount(); int i, x, y; @@ -942,7 +1071,7 @@ void cSummaryPeaksTableWidget::resetFilter() { cPeaksList eicchromatogram; eicchromatogram.clear(); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { iontypecol = 3; if (parameters->generateisotopepattern) { @@ -968,7 +1097,7 @@ void cSummaryPeaksTableWidget::resetFilter() { progress.setWindowModality(Qt::ApplicationModal); coordinates.clear(); - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { for (i = 0; i < rowcount; i++) { x = databasemodel->item(i, 1)->data(Qt::DisplayRole).toInt(); @@ -994,7 +1123,7 @@ void cSummaryPeaksTableWidget::resetFilter() { progress.setValue(i); } - emit sendFilterOptionsToImageWindow(coordinates, rowsfiltercombobox->currentText().toStdString(), rowsfiltercomparatorcombobox->currentText().toStdString(), rowsfilterline->text().toStdString(), rowsfiltercasesensitive->isChecked(), rowsfilterwholeword->isChecked()); + emit sendFilterOptionsToImageWindow(coordinates, (bool)rowsfilteroperator->currentIndex(), rowsfiltercombobox1->currentText().toStdString(), rowsfiltercomparatorcombobox1->currentText().toStdString(), rowsfilterline1->text().toStdString(), rowsfiltercombobox2->currentText().toStdString(), rowsfiltercomparatorcombobox2->currentText().toStdString(), rowsfilterline2->text().toStdString(), rowsfiltercasesensitive->isChecked(), rowsfilterwholeword->isChecked()); } else { eicchromatogram = origeicchromatogram; @@ -1124,7 +1253,7 @@ void cSummaryPeaksTableWidget::exportStatistics() { int thintcol; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { if (parameters->generateisotopepattern) { @@ -1156,26 +1285,26 @@ void cSummaryPeaksTableWidget::exportStatistics() { } else { if (parameters->generateisotopepattern) { - iontypecol = 1; - theoreticalmzcol = 2; - summaryformulacol = 10; - namecol = 11; - referencecol = 12; - scorecol = 8; - fdrcol = 9; + iontypecol = 2; + theoreticalmzcol = 3; + summaryformulacol = 11; + namecol = 12; + referencecol = 13; + scorecol = 9; + fdrcol = 10; idcol = 0; - relintcol = 5; - absintcol = 6; + relintcol = 6; + absintcol = 7; } else { - iontypecol = 1; - theoreticalmzcol = 2; - summaryformulacol = 7; - namecol = 8; - referencecol = 9; + iontypecol = 2; + theoreticalmzcol = 3; + summaryformulacol = 8; + namecol = 9; + referencecol = 10; idcol = 0; - relintcol = 4; - absintcol = 5; + relintcol = 5; + absintcol = 6; } } @@ -1229,7 +1358,7 @@ void cSummaryPeaksTableWidget::exportStatistics() { QStandardItem* item; for (int i = 0; i < proxymodel->rowCount(); i++) { - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { keyms.clear(); @@ -1355,7 +1484,7 @@ void cSummaryPeaksTableWidget::exportStatistics() { vector scoremedianvector; vector fdrmedianvector; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { auto cmpms = [](pair > const &a, pair > const &b) { if (a.first.name < b.first.name) { @@ -1656,7 +1785,7 @@ void cSummaryPeaksTableWidget::rowDoubleClicked(const QModelIndex& item) { int idcolumn = 0; int experimentalmzcolumn = 0; - if (parameters->mode == dereplication) { + if ((parameters->mode == dereplication) || (parameters->mode == compoundsearch)) { if ((parameters->peaklistfileformat == mis) || (parameters->peaklistfileformat == imzML)) { if (parameters->generateisotopepattern) { size = 14; @@ -1669,12 +1798,12 @@ void cSummaryPeaksTableWidget::rowDoubleClicked(const QModelIndex& item) { } else { if (parameters->generateisotopepattern) { - size = 12; - experimentalmzcolumn = 4; + size = 13; + experimentalmzcolumn = 5; } else { - size = 9; - experimentalmzcolumn = 3; + size = 10; + experimentalmzcolumn = 4; } } } @@ -1707,3 +1836,90 @@ void cSummaryPeaksTableWidget::rowDoubleClicked(const QModelIndex& item) { } } +void cSummaryPeaksTableWidget::rowsFilterLeft1Slot() { + if ((parameters->mode != dereplication) && (parameters->mode != compoundsearch)) { + return; + } + + QStringList list = ((QStringListModel*)rowsfilterlinecompleter1->model())->stringList(); + int index = list.indexOf(rowsfilterline1->text()); + int comboindex = rowsfiltercombobox1->findText("Name"); + + if ((index > 0) && (comboindex >= 0)) { + rowsfiltercombobox1->setCurrentIndex(comboindex); + rowsfiltercomparatorcombobox1->setCurrentIndex(0); + rowsfilterline1->setText(list[index - 1]); + filterRows(); + setWindowTitle(title + " - compound " + QVariant(index).toString() + " of " + QVariant(((QStringListModel*)rowsfilterlinecompleter1->model())->stringList().size()).toString()); + } + else { + setWindowTitle(title); + } +} + + +void cSummaryPeaksTableWidget::rowsFilterRight1Slot() { + if ((parameters->mode != dereplication) && (parameters->mode != compoundsearch)) { + return; + } + + QStringList list = ((QStringListModel*)rowsfilterlinecompleter1->model())->stringList(); + int index = list.indexOf(rowsfilterline1->text()); + int comboindex = rowsfiltercombobox1->findText("Name"); + + if ((index < list.size() - 1) && (comboindex >= 0)) { + rowsfiltercombobox1->setCurrentIndex(comboindex); + rowsfiltercomparatorcombobox1->setCurrentIndex(0); + rowsfilterline1->setText(list[index + 1]); + filterRows(); + setWindowTitle(title + " - compound " + QVariant(index + 2).toString() + " of " + QVariant(((QStringListModel*)rowsfilterlinecompleter1->model())->stringList().size()).toString()); + } + else { + setWindowTitle(title); + } +} + + +void cSummaryPeaksTableWidget::rowsFilterLeft2Slot() { + if ((parameters->mode != dereplication) && (parameters->mode != compoundsearch)) { + return; + } + + QStringList list = ((QStringListModel*)rowsfilterlinecompleter2->model())->stringList(); + int index = list.indexOf(rowsfilterline2->text()); + int comboindex = rowsfiltercombobox2->findText("Name"); + + if ((index > 0) && (comboindex >= 0)) { + rowsfiltercombobox2->setCurrentIndex(comboindex); + rowsfiltercomparatorcombobox2->setCurrentIndex(0); + rowsfilterline2->setText(list[index - 1]); + filterRows(); + setWindowTitle(title + " - compound " + QVariant(index).toString() + " of " + QVariant(((QStringListModel*)rowsfilterlinecompleter2->model())->stringList().size()).toString()); + } + else { + setWindowTitle(title); + } +} + + +void cSummaryPeaksTableWidget::rowsFilterRight2Slot() { + if ((parameters->mode != dereplication) && (parameters->mode != compoundsearch)) { + return; + } + + QStringList list = ((QStringListModel*)rowsfilterlinecompleter2->model())->stringList(); + int index = list.indexOf(rowsfilterline2->text()); + int comboindex = rowsfiltercombobox2->findText("Name"); + + if ((index < list.size() - 1) && (comboindex >= 0)) { + rowsfiltercombobox2->setCurrentIndex(comboindex); + rowsfiltercomparatorcombobox2->setCurrentIndex(0); + rowsfilterline2->setText(list[index + 1]); + filterRows(); + setWindowTitle(title + " - compound " + QVariant(index + 2).toString() + " of " + QVariant(((QStringListModel*)rowsfilterlinecompleter2->model())->stringList().size()).toString()); + } + else { + setWindowTitle(title); + } +} + diff --git a/CycloBranch/gui/cSummaryPeaksTableWidget.h b/CycloBranch/gui/cSummaryPeaksTableWidget.h index d604809..52e7a30 100644 --- a/CycloBranch/gui/cSummaryPeaksTableWidget.h +++ b/CycloBranch/gui/cSummaryPeaksTableWidget.h @@ -20,6 +20,8 @@ #include #include #include +#include +#include #include #include "core/utilities.h" #include "gui/cViewButtonDelegate.h" @@ -289,6 +291,8 @@ class cSummaryPeaksTableWidget : public QMainWindow private: + QString title; + cParameters* parameters; QWidget* parent; @@ -307,9 +311,25 @@ class cSummaryPeaksTableWidget : public QMainWindow QToolBar* toolbarFilter; QWidget* rowsfilterwidget; QHBoxLayout* rowsfilterhbox; - QComboBox* rowsfiltercombobox; - QComboBox* rowsfiltercomparatorcombobox; - QLineEdit* rowsfilterline; + + QComboBox* rowsfilteroperator; + + QComboBox* rowsfiltercombobox1; + QComboBox* rowsfiltercomparatorcombobox1; + QStringListModel* rowsfilterstringlistmodel1; + QCompleter* rowsfilterlinecompleter1; + QLineEdit* rowsfilterline1; + QPushButton* rowsfilterleft1; + QPushButton* rowsfilterright1; + + QComboBox* rowsfiltercombobox2; + QComboBox* rowsfiltercomparatorcombobox2; + QStringListModel* rowsfilterstringlistmodel2; + QCompleter* rowsfilterlinecompleter2; + QLineEdit* rowsfilterline2; + QPushButton* rowsfilterleft2; + QPushButton* rowsfilterright2; + QCheckBox* rowsfiltercasesensitive; QCheckBox* rowsfilterwholeword; QPushButton* rowsfilterbutton; @@ -363,6 +383,19 @@ private slots: void rowDoubleClicked(const QModelIndex& item); + void rowsFilterLeft1Slot(); + + + void rowsFilterRight1Slot(); + + + void rowsFilterLeft2Slot(); + + + void rowsFilterRight2Slot(); + + + signals: @@ -389,13 +422,17 @@ private slots: /** \brief Send the vector of coordinates to image window. \param coordinates a vector of coordinates x and y - \param columnname name of column which was compared - \param comparatorname name of used comparator - \param filterstring a string used to filter the points + \param operatortype the type of operator (0 = or; 1 = and) + \param columnname1 name of column which was compared + \param comparatorname1 name of used comparator + \param filterstring1 a string used to filter the points + \param columnname2 name of column which was compared + \param comparatorname2 name of used comparator + \param filterstring2 a string used to filter the points \param casesensitive true if the string was used as a casesensitive, false otherwise \param wholeword true if whole words only are compared, false otherwise */ - void sendFilterOptionsToImageWindow(vector coordinates, string columnname, string comparatorname, string filterstring, bool casesensitive, bool wholeword); + void sendFilterOptionsToImageWindow(vector coordinates, bool operatortype, string columnname1, string comparatorname1, string filterstring1, string columnname2, string comparatorname2, string filterstring2, bool casesensitive, bool wholeword); /** diff --git a/CycloBranch/gui/cViewButtonDelegate.cpp b/CycloBranch/gui/cViewButtonDelegate.cpp index e64e107..27586d3 100644 --- a/CycloBranch/gui/cViewButtonDelegate.cpp +++ b/CycloBranch/gui/cViewButtonDelegate.cpp @@ -23,7 +23,12 @@ void cViewButtonDelegate::paint(QPainter* painter, const QStyleOptionViewItem& o QStyleOptionButton button; button.rect = option.rect; - button.text = "view"; + if (index.data(Qt::DisplayRole).toString().contains("https://www.ncbi.nlm.nih.gov/pccompound?term=")) { + button.text = "search"; + } + else { + button.text = "view"; + } button.state = QStyle::State_Enabled; QApplication::style()->drawControl(QStyle::CE_PushButton, &button, painter); diff --git a/CycloBranch/images.qrc b/CycloBranch/images.qrc index ee791fe..cddf636 100644 --- a/CycloBranch/images.qrc +++ b/CycloBranch/images.qrc @@ -50,5 +50,6 @@ images/icons/rectangle.png images/icons/chromatography.png images/icons/79.png + images/icons/12.png diff --git a/CycloBranch/images/icons/12.png b/CycloBranch/images/icons/12.png new file mode 100644 index 0000000..5445e11 Binary files /dev/null and b/CycloBranch/images/icons/12.png differ diff --git a/CycloBranch/images/splash.cdr b/CycloBranch/images/splash.cdr index 1e3189a..567fad9 100644 Binary files a/CycloBranch/images/splash.cdr and b/CycloBranch/images/splash.cdr differ diff --git a/CycloBranch/images/splash.png b/CycloBranch/images/splash.png index d5cf7ef..7ffd8f8 100644 Binary files a/CycloBranch/images/splash.png and b/CycloBranch/images/splash.png differ diff --git a/CycloBranch/parallel/cGraphReaderThread.cpp b/CycloBranch/parallel/cGraphReaderThread.cpp index 88decca..880f770 100644 --- a/CycloBranch/parallel/cGraphReaderThread.cpp +++ b/CycloBranch/parallel/cGraphReaderThread.cpp @@ -289,56 +289,55 @@ void cGraphReaderThread::run() { cEdge e; double unchargedprecursormass = charge(uncharge(parameters->precursormass, parameters->precursorcharge), (parameters->precursorcharge > 0)?1:-1); - switch (parameters->peptidetype) - { - case cyclic: - e = (*graph)[0][0]; - if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, 0, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { - // terminated - return; - } - break; - case linear: - case branched: - for (int i = 0; i < (*graph)[0].size(); i++) { - e = (*graph)[0][i]; - if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, e.startmodifID, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { + switch (parameters->peptidetype) { + case cyclic: + e = (*graph)[0][0]; + if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, 0, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { // terminated return; } - } - break; - case branchcyclic: - for (int i = 0; i < (*graph)[0].size(); i++) { - e = (*graph)[0][i]; - if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, e.startmodifID, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { - // terminated - return; + break; + case linear: + case branched: + for (int i = 0; i < (*graph)[0].size(); i++) { + e = (*graph)[0][i]; + if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, e.startmodifID, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { + // terminated + return; + } } - } - break; - case linearpolyketide: - for (int i = 0; i < (*graph)[0].size(); i++) { - e = (*graph)[0][i]; - if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, e.startmodifID, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { - // terminated - return; + break; + case branchcyclic: + for (int i = 0; i < (*graph)[0].size(); i++) { + e = (*graph)[0][i]; + if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, e.startmodifID, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { + // terminated + return; + } } - } - break; - case cyclicpolyketide: - for (int i = 0; i < (*graph)[0].size(); i++) { - e = (*graph)[0][i]; - if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, 0, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { - // terminated - return; + break; + case linearpolyketide: + for (int i = 0; i < (*graph)[0].size(); i++) { + e = (*graph)[0][i]; + if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, e.startmodifID, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { + // terminated + return; + } } - } - break; - case other: - break; - default: - break; + break; + case cyclicpolyketide: + for (int i = 0; i < (*graph)[0].size(); i++) { + e = (*graph)[0][i]; + if (getCandidatesIter(e.targetion, candidates, e.targetnode, composition, unchargedprecursormass, 0, 0, 0, -1, perspectivepath, (*graph)[e.targetnode].getMZRatio(), e.summary, terminatecomputation) == -1) { + // terminated + return; + } + } + break; + case other: + break; + default: + break; } } diff --git a/CycloBranch/parallel/cSpectrumComparatorThread.cpp b/CycloBranch/parallel/cSpectrumComparatorThread.cpp index a7a8ab2..b6d6a17 100644 --- a/CycloBranch/parallel/cSpectrumComparatorThread.cpp +++ b/CycloBranch/parallel/cSpectrumComparatorThread.cpp @@ -234,6 +234,7 @@ void cSpectrumComparatorThread::run() { theoreticalpeaksrealsize = tsp.compareCyclicPolyketide(peaklist, *bricksdatabasewithcombinations, false, *rxsequencetag, *rxsearchedsequence, unmatchedpeaksinmatchedpatterns, 0); break; case other: + theoreticalpeaksrealsize = tsp.compareOther(peaklist, false, unmatchedpeaksinmatchedpatterns, 0); break; default: break; diff --git a/README.md b/README.md index f7740ee..b8ded95 100644 --- a/README.md +++ b/README.md @@ -1,44 +1,50 @@ # CycloBranch -An open-source, cross-platform and stand-alone tool for mass spectrometry data analysis. +A tool for mass spectrometry data analysis. -## Main features +## About * designed for identification of small molecules - * *de novo* sequencing - * non-ribosomal peptides (NRPs) [1] - * siderophores (including metals) [2] - * supports linear, cyclic, branched, and branch-cyclic structures - * based on custom databases of building blocks - * 19 proteinogenic amino acids (20 including isomers) - * 287 NRP blocks (512 including isomers) - * dereplication / database search + * open-source, cross-platform, and stand-alone + * supported types of spectra * conventional mass spectra (MS) - * liquid-chromatography mass spectra (LC-MS) [2] - * batch-processing + * liquid-chromatography mass spectra (LC-MS) * imaging mass spectra (MSI) - * pixel-by-pixel analysis of imaging mass spectra (imzML) [2] - * fusion of imzML files with optical and histology images [3] * tandem mass spectra (MS/MS) - * single spectra analysis - * supports also a direct comparison of an experimental spectrum with a theoretical one - + * main features + * MS, LC-MC, MSI + * dereplication / database search + * prediction of elemental compositions of unknown compounds + * fine isotopic structure + * MSI + * pixel-by-pixel analysis of imaging mass spectra (imzML) + * fusion of imzML files with optical and histology images + * MS/MS + * single spectra only + * analysis based on custom databases of building blocks (amino acids) + * linear, cyclic, branched, and branch-cyclic non-ribosomal peptides (NRPs) and siderophores + * direct comparison of experimental spectrum with theoretical spectrum + * database search + * *de novo* sequencing + * 19 proteinogenic amino acids (20 including isomers) + * 287 NRP blocks (512 including isomers) + ## Supported file formats * mzML, imzML * profile or centroid spectra - * profile spectra require [OpenMS 2.x](https://sourceforge.net/projects/open-ms/files/OpenMS/OpenMS-2.3/) installed + * profile spectra require [OpenMS 2.x](https://sourceforge.net/projects/open-ms/files/OpenMS/OpenMS-2.4/) installed * mzXML * centroid spectra - * requires [OpenMS 2.x](https://sourceforge.net/projects/open-ms/files/OpenMS/OpenMS-2.3/) installed + * requires [OpenMS 2.x](https://sourceforge.net/projects/open-ms/files/OpenMS/OpenMS-2.4/) installed * baf (Bruker) - * profile spectra + * profile and centroid spectra * requires [CompassXport 3.0](http://www.bruker.com/service/support-upgrades/software-downloads/mass-spectrometry.html) installed * Windows only * raw (Thermo) * profile or centroid spectra - * requires [OpenMS 2.x](https://sourceforge.net/projects/open-ms/files/OpenMS/OpenMS-2.3/) including ProteoWizard installed + * requires [OpenMS 2.x](https://sourceforge.net/projects/open-ms/files/OpenMS/OpenMS-2.4/) including ProteoWizard installed * Windows only * raw (Waters) - * centroid spectra + * profile and centroid spectra * Windows only * mgf (Mascot Generic File format) * centroid spectra @@ -47,10 +53,16 @@ An open-source, cross-platform and stand-alone tool for mass spectrometry data a * tab separated mass-to-charge ratio and intensity on each line; multiple peaklists separated by an empty line ## Homepage -http://ms.biomed.cas.cz/cyclobranch/ +https://ms.biomed.cas.cz/cyclobranch/ -## Publications - * [1] *J. Am. Soc. Mass Spectrom.* (2015), 26(10):1780-1786. DOI: [10.1007/s13361-015-1211-1](https://doi.org/10.1007/s13361-015-1211-1) - * [2] *BBA - Proteins Proteom.* (2017), 1865(7):768-775. DOI: [10.1016/j.bbapap.2016.12.003](https://doi.org/10.1016/j.bbapap.2016.12.003) - * [3] *Sci. Rep.* (2017), 7:16523. DOI: [10.1038/s41598-017-16648-z](https://doi.org/10.1038/s41598-017-16648-z) - * [4] *J. Mass Spectrom.* (2018), 53(11):1097-1103. DOI: [10.1002/jms.4285](https://doi.org/10.1002/jms.4285) +## References and More Information + * *de novo* peptide sequencing of NRPs + * Novak J. et al. CycloBranch: *De Novo* Sequencing of Nonribosomal Peptides from Accurate Product Ion Mass Spectra. *J. Am. Soc. Mass Spectrom.*, 26(10):1780-1786, 2015. DOI: [10.1007/s13361-015-1211-1](https://doi.org/10.1007/s13361-015-1211-1) + * dereplication in LC-MS and MSI datasets; *de novo* sequencing of siderophores + * Novak J. et al. Batch-processing of Imaging or Liquid-chromatography Mass Spectrometry Datasets and *De Novo* Sequencing of Polyketide Siderophores. *BBA - Proteins Proteom.*, 1865(7):768-775, 2017. DOI: [10.1016/j.bbapap.2016.12.003](https://doi.org/10.1016/j.bbapap.2016.12.003) + * fusion of imzML files with histology images + * Luptakova D. et al. Non-invasive and Invasive Diagnoses of Aspergillosis in a Rat Model by Mass Spectrometry. *Sci. Rep.*, 7:16523, 2017. DOI: [10.1038/s41598-017-16648-z](https://doi.org/10.1038/s41598-017-16648-z) + * isotopic fine structure + * Novak J. et al. CycloBranch: An open tool for fine isotope structures in conventional and product ion mass spectra. *J. Mass Spectrom.* 53(11):1097-1103, 2018. DOI: [10.1002/jms.4285](https://doi.org/10.1002/jms.4285) + * configuration of the tool for different use cases + * Pluhacek T. et al. Analysis of Microbial Siderophores by Mass Spectrometry. In Sanjoy K. Bhattacharya (ed.), *Metabolomics: Methods and Protocols*, Methods in Molecular Biology, 1996:131-153, Springer, 2019. DOI: [10.1007/978-1-4939-9488-5_12](https://doi.org/10.1007/978-1-4939-9488-5_12) diff --git a/readme.txt b/readme.txt index 2969cd9..3f335ad 100644 --- a/readme.txt +++ b/readme.txt @@ -1,3 +1,3 @@ CycloBranch.sln -- project for MS Visual Studio 2012 -- requires Qt 5.2.1, boost 1.57 and xerces-c 3.1.1 installed +- project for MS Visual Studio 2017 +- requires Qt 5.13.0, boost 1.71.0 and xerces-c 3.1.1 installed
Pattern TypeAbsolute IntensityError [ppm]ScoreFDR