Skip to content

Commit

Permalink
added trivial mediator double bond position lookup
Browse files Browse the repository at this point in the history
  • Loading branch information
dominik-kopczynski committed Dec 1, 2023
1 parent f958589 commit b1d2c26
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 4 deletions.
1 change: 1 addition & 0 deletions parsers/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
<includes>
<include>lipid-list.csv</include>
<include>functional-groups.csv</include>
<include>trivial_mediators.csv</include>
<include>**/*.g4</include>
</includes>
</resource>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,11 +33,25 @@
public final class KnownFunctionalGroups extends HashMap<String, FunctionalGroup> {

public static final int UNDEFINED_CLASS = 0;
private final HashMap<String, ArrayList<Integer>> trivialMediators = new HashMap<>();

private void loadData(List<String> lines, SumFormulaParser sumFormulaParser) {
private void loadData(List<String> lines, List<String> linesTM, SumFormulaParser sumFormulaParser) {
int lineCounter = 0;
ArrayList< ArrayList<String>> functional_data = new ArrayList<>();
HashSet<String> functional_data_set = new HashSet<>();

for (String line : linesTM) {
if (line.isEmpty()) continue;

ArrayList<String> tokens = StringFunctions.splitString(line, '\t', '"', true);
if (tokens.size() != 2 || containsKey(tokens.get(0))) continue;

ArrayList<Integer> positions = new ArrayList<>();
for (String pos : StringFunctions.splitString(tokens.get(1), ',', '"', true)){
positions.add(Integer.parseInt(pos));
}
trivialMediators.put(tokens.get(0), positions);
}

for (String line : lines) {
if (lineCounter++ == 0) {
Expand Down Expand Up @@ -89,10 +103,18 @@ public KnownFunctionalGroups() {

public KnownFunctionalGroups(List<String> lines, SumFormulaParser sumFormulaParser) {
super();
loadData(lines, sumFormulaParser);
loadData(lines, StringFunctions.getResourceAsStringList(new ClassPathResource("trivial_mediators.csv")), sumFormulaParser);
}

public FunctionalGroup get(String s) {
return super.get(s).copy();
}

public HashMap<String, ArrayList<Integer>> getTmDb() {
return trivialMediators;
}

public ArrayList<Integer> db(String s) {
return trivialMediators.get(s);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
import static java.util.Map.entry;
import java.util.TreeMap;
import org.lifstools.jgoslin.domain.Element;
import static org.lifstools.jgoslin.parser.Parser.EOF_SIGN;

/**
* Event handler implementation for the {@link GoslinParser}.
Expand All @@ -53,6 +54,7 @@ public class GoslinParserEventHandler extends LipidBaseParserEventHandler {
private boolean mediatorSuffix;
private Element heavyElement;
private int heavyElementNumber;
private boolean trivialMediator;

private final static Map<String, Integer> MEDIATOR_FA = Map.of(
"H", 17, "O", 18, "E", 20, "Do", 22);
Expand Down Expand Up @@ -162,6 +164,7 @@ protected void resetParser(TreeNode node) {
headgroupDecorators.clear();
heavyElement = Element.C;
heavyElementNumber = 0;
trivialMediator = false;
}

private void setHeadGroupName(TreeNode node) {
Expand Down Expand Up @@ -265,6 +268,19 @@ private void buildLipid(TreeNode node) {
}

Headgroup headgroup = prepareHeadgroupAndChecks();
String lipidName = node.getText();
if (lipidName.charAt(lipidName.length() - 1) == EOF_SIGN) lipidName = lipidName.substring(0, lipidName.length() - 1);
HashMap<String, ArrayList<Integer>> trivialDb = knownFunctionalGroups.getTmDb();

if (trivialMediator && trivialDb.containsKey(lipidName)){
ArrayList<Integer> dbPos = trivialDb.get(lipidName);
faList.get(0).getDoubleBonds().setNumDoubleBonds(dbPos.size());
Map<Integer, String> doubleBondPositions = faList.get(0).getDoubleBonds().getDoubleBondPositions();
doubleBondPositions.clear();

for (Integer p : dbPos) doubleBondPositions.put(p, "");
level = LipidLevel.FULL_STRUCTURE;
}

LipidAdduct lipid = new LipidAdduct(assembleLipid(headgroup), adduct);
content = lipid;
Expand Down Expand Up @@ -368,6 +384,7 @@ private void setMediatorTetranor(TreeNode node) {
}

private void setMediatorCarbon(TreeNode node) {
trivialMediator = true;
currentFa.setNumCarbon(currentFa.getNumCarbon() + MEDIATOR_FA.get(node.getText()));
}

Expand Down Expand Up @@ -398,13 +415,13 @@ private void addMediatorFunction(TreeNode node) {
if (mediatorFunctionPositions.size() > 0) {
functionalGroup.setPosition(mediatorFunctionPositions.get(0));
}
} else if (mediatorFunction.equals("Hp")) {
} else if (mediatorFunction.toLowerCase().equals("hp")) {
functionalGroup = knownFunctionalGroups.get("OOH");
fg = "OOH";
if (mediatorFunctionPositions.size() > 0) {
functionalGroup.setPosition(mediatorFunctionPositions.get(0));
}
} else if (mediatorFunction.equals("E") || mediatorFunction.equals("Ep")) {
} else if (mediatorFunction.equals("E") || mediatorFunction.toLowerCase().equals("ep")) {
functionalGroup = knownFunctionalGroups.get("Ep");
fg = "Ep";
if (mediatorFunctionPositions.size() > 0) {
Expand Down

0 comments on commit b1d2c26

Please sign in to comment.