/************************************************************************* * * * This file is part of the 20n/act project. * * 20n/act enables DNA prediction for synthetic biology/bioengineering. * * Copyright (C) 2017 20n Labs, Inc. * * * * Please direct all queries to act@20n.com. * * * * 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. * * * * 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. * * * * You should have received a copy of the GNU General Public License * * along with this program. If not, see <http://www.gnu.org/licenses/>. * * * *************************************************************************/ package com.act.biointerpretation.metadata; import java.util.List; import java.util.Map; public class ProteinMetadata { //These are strict requirements that these be ok Long reactionId; List<Long> sequences; Map<Host, Integer> cloned; Double kcatkm; Double specificActivity; //These things should be downranked but not dealbreakers, they are fixable Map<Host, Localization> localization; Boolean heteroSubunits; Boolean modifications; public void setReactionId(Long reactionId) { this.reactionId = reactionId; } public boolean isValid(Host host) { if (sequences.isEmpty()) { return false; } //Don't bother if it's a really bad enzyme if(kcatkm != null && kcatkm < 1.0) { //Not in the top 80% of proteins, and anecdotally the bare minimum activity limit return false; } //Don't bother if it's a really bad enzyme if(specificActivity != null && specificActivity < 0.3) { //Not in the top 80% of proteins return false; } //Don't bother if there is a negaative observation about the protein working in the host Integer clonedval = cloned.get(host); if(clonedval != null && clonedval < 0) { return false; } return true; } }