Skip to content

Commit

Permalink
changed amine to amide and added ether bond
Browse files Browse the repository at this point in the history
  • Loading branch information
dominik-kopczynski committed Dec 15, 2021
1 parent cc8544e commit 9624c79
Show file tree
Hide file tree
Showing 5 changed files with 18 additions and 12 deletions.
2 changes: 1 addition & 1 deletion cppgoslin/domain/LipidEnums.h
Original file line number Diff line number Diff line change
Expand Up @@ -95,7 +95,7 @@ struct LipidClassMeta {


typedef map<LipidClass, LipidClassMeta> ClassMap;
enum LipidFaBondType { NO_FA, UNDEFINED_FA, ESTER, ETHER_PLASMANYL, ETHER_PLASMENYL, ETHER_UNSPECIFIED, LCB_REGULAR, LCB_EXCEPTION, AMINE};
enum LipidFaBondType { NO_FA, UNDEFINED_FA, ESTER, ETHER_PLASMANYL, ETHER_PLASMENYL, ETHER, ETHER_UNSPECIFIED, LCB_REGULAR, LCB_EXCEPTION, AMIDE};

static const set<LipidFaBondType> LCB_STATES {LCB_REGULAR, LCB_EXCEPTION};

Expand Down
6 changes: 3 additions & 3 deletions src/domain/FattyAcid.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -263,12 +263,12 @@ void FattyAcid::compute_elements(){
elements->at(ELEMENT_H) = (2 * num_carbon - 1 - 2 * num_double_bonds + 2); // hydrogen
}

else if (lipid_FA_bond_type == ETHER_PLASMANYL){
else if (lipid_FA_bond_type == ETHER_PLASMANYL || lipid_FA_bond_type == ETHER){
elements->at(ELEMENT_H) = ((num_carbon + 1) * 2 - 1 - 2 * num_double_bonds); // hydrogen
}

else if (lipid_FA_bond_type == AMINE)
elements->at(ELEMENT_H) = (2 * num_carbon + 1 - 2 * num_double_bonds); // hydrogen
else if (lipid_FA_bond_type == AMIDE)
elements->at(ELEMENT_H) = (2 * num_carbon + 1 - 2 * num_double_bonds) - 1; // hydrogen

else {
throw LipidException("Mass cannot be computed for fatty acyl chain with this bond type");
Expand Down
5 changes: 5 additions & 0 deletions src/domain/LipidSpecies.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -163,5 +163,10 @@ ElementTable* LipidSpecies::get_elements(){
elements->at(ELEMENT_O) -= -additional_fa + info->num_ethers + headgroup->sp_exception + hydrochain;
elements->at(ELEMENT_H) += -additional_fa + remaining_H + 2 * info->num_ethers + 2 * hydrochain;

if (contains_val(meta.special_cases, "Amide")){
elements->at(ELEMENT_O) -= meta.max_num_fa;
elements->at(ELEMENT_H) += meta.max_num_fa;
}

return elements;
}
11 changes: 4 additions & 7 deletions src/parser/FattyAcidParserEventHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -512,7 +512,7 @@ void FattyAcidParserEventHandler::set_fatty_acyl_type(TreeNode *node) {
else if (contains_val(acetate_set, t)) headgroup = "WE";
else if (t == "ne"){
headgroup = "HC";
fatty_acyl_stack.back()->lipid_FA_bond_type = AMINE;
fatty_acyl_stack.back()->lipid_FA_bond_type = ETHER;
}
else {
headgroup = t;
Expand Down Expand Up @@ -1057,9 +1057,7 @@ void FattyAcidParserEventHandler::add_wax_ester(TreeNode *node) {
FattyAcid *fa = fatty_acyl_stack.back();
fatty_acyl_stack.pop_back();

fa->name += "1";
fa->lipid_FA_bond_type = AMINE;
fatty_acyl_stack.back()->name += "2";
fa->lipid_FA_bond_type = ETHER;
fatty_acyl_stack.insert(fatty_acyl_stack.begin(), fa);
}

Expand Down Expand Up @@ -1110,9 +1108,8 @@ void FattyAcidParserEventHandler::add_amine(TreeNode *node) {
FattyAcid *fa = fatty_acyl_stack.back();
fatty_acyl_stack.pop_back();

fa->name += "1";
fatty_acyl_stack.back()->name += "2";
fa->lipid_FA_bond_type = AMINE;
fa->lipid_FA_bond_type = AMIDE;
fatty_acyl_stack[fatty_acyl_stack.size() - 1]->lipid_FA_bond_type = AMIDE;
fatty_acyl_stack.insert(fatty_acyl_stack.begin(), fa);
}

Expand Down
6 changes: 5 additions & 1 deletion src/parser/LipidBaseParserEventHandler.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,11 @@ Headgroup* LipidBaseParserEventHandler::prepare_headgroup_and_checks(){
if (contains_val(LipidClasses::get_instance().lipid_classes, headgroup->lipid_class)){

if (contains_val(LipidClasses::get_instance().lipid_classes.at(headgroup->lipid_class).special_cases, "HC")){
fa_list->front()->lipid_FA_bond_type = AMINE;
fa_list->front()->lipid_FA_bond_type = ETHER;
}

if (contains_val(LipidClasses::get_instance().lipid_classes.at(headgroup->lipid_class).special_cases, "Amide")){
for (auto fatty : *fa_list) fatty->lipid_FA_bond_type = AMIDE;
}

int max_num_fa = LipidClasses::get_instance().lipid_classes.at(headgroup->lipid_class).max_num_fa;
Expand Down

0 comments on commit 9624c79

Please sign in to comment.