Git Lab CI for docker build enabled! You can enable it using .gitlab-ci.yml in your project. Check file template at https://gitlab.bio.di.uminho.pt/snippets/5

Commit fc9cd681 authored by Davide Lagoa's avatar Davide Lagoa
Browse files

several updates

parent db3ad775
......@@ -64,24 +64,29 @@ public class WriteByMetabolitesID {
BiosynthMetabolites namesAndIDsContainer = getBiosynthDataByName(service, true); //154225 names
// BiosynthMetabolites namesAndIDsContainer = null;
// FileUtils.saveMapInFile2("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getMetabolitesIDs3.txt", namesAndIDsContainer.getMetabolitesIDs());
// FilesUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCase3.txt", namesAndIDsContainer.getNamesLowerCase());
// FilesUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCaseWithoutSigns3.txt", namesAndIDsContainer.getNamesLowerCaseWithoutSigns());
// FilesUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesWithoutSigns3.txt", namesAndIDsContainer.getNamesWithoutSigns());
Map<String, Set<TcNumberContainer2>> reactionsData = JSONFilesUtils.readJSONtcdbReactionsFile();
// Map<String, Set<TcNumberContainer2>> reactionsData2 = new HashMap<>();
//
// reactionsData2.put("O51235", reactionsData.get("O51235"));
//
// IdentifyReactionsMetabolites metabolitesIdentification = new IdentifyReactionsMetabolites(reactionsData2, namesAndIDsContainer, service);
//
// Map<String, Map<String, MetaboliteMajorLabel>> tcdbMetabolitesIDs = metabolitesIdentification.getTcdbMetabolitesIDs();
//
// Map<String, String[]> forChildsSearch = metabolitesIdentification.getforChildsSearch();
int n = 1;
while (n != 99) {
if(n == 100)
data = getBiosynthDBData(service);
else if(n == 101)
namesAndIDsContainer = getBiosynthDataByName(service, true);
else if(n == 102) {
data = getBiosynthDBData(service);
namesAndIDsContainer = getBiosynthDataByName(service, true);
}
test(data, service, namesAndIDsContainer);
test(namesAndIDsContainer, data, service, null, reactionsData, null);
System.out.println("Enter a random number to repeat (100 to repeat data retrieval) or 99 to finish: ");
......@@ -105,23 +110,33 @@ public class WriteByMetabolitesID {
}
}
public static void test(Map<String, BiosynthMetaboliteProperties> data, BiodbGraphDatabaseService service, BiosynthMetabolites namesAndIDsContainer) {
public static void test(BiosynthMetabolites namesAndIDsContainer, Map<String, BiosynthMetaboliteProperties> data, BiodbGraphDatabaseService service, Map<String, Map<String, MetaboliteMajorLabel>> tcdbMetabolitesIDs,
Map<String, Set<TcNumberContainer2>> reactionsData2, Map<String, String[]> forChildsSearch) {
try {
/////TRIAGE
// Map<String, Set<TcNumberContainer2>> reactionsData2 = new HashMap<>();
//
// reactionsData2.put("Q1D027", reactionsData.get("Q1D027"));
Map<String, Set<TcNumberContainer2>> reactionsData = JSONFilesUtils.readJSONtcdbReactionsFile();
IdentifyReactionsMetabolites metabolitesIdentification = new IdentifyReactionsMetabolites(reactionsData2, namesAndIDsContainer, service);
IdentifyReactionsMetabolites metabolitesIdentification = new IdentifyReactionsMetabolites(reactionsData, namesAndIDsContainer, service);
tcdbMetabolitesIDs = metabolitesIdentification.getTcdbMetabolitesIDs();
Map<String, Map<String, MetaboliteMajorLabel>> tcdbMetabolitesIDs = metabolitesIdentification.getTcdbMetabolitesIDs();
forChildsSearch = metabolitesIdentification.getforChildsSearch();
Map<String, String[]> forChildsSearch = metabolitesIdentification.getforChildsSearch();
// Map<String, Set<TcNumberContainer2>> reactionsData3 = new HashMap<>();
Map<String, Set<TcNumberContainer2>> newData = new TransportReactionsBuilder(-1, true, tcdbMetabolitesIDs, reactionsData, forChildsSearch, service, data).getResults();
// reactionsData3.put("O51235", reactionsData.get("O51235"));
JSONFilesUtils.writeJSONTriageReactions(newData);
/////TRIAGE
Map<String, Set<TcNumberContainer2>> newData = new TransportReactionsBuilder(tcdbMetabolitesIDs, reactionsData2, forChildsSearch, service, data).getResults();
// JSONFilesUtils.writeJSONTriageReactions(newData);
// Map<String, Set<TcNumberContainer2>> newData2 = new Has
new PopulateTriageNeo4jDatabase(newData);
////COUNTS
......@@ -162,7 +177,7 @@ public class WriteByMetabolitesID {
//
// }
// }
//
// for(String key : countsMap.keySet())
// System.out.println(key + "\t" + countsMap.get(key));
......@@ -183,8 +198,6 @@ public class WriteByMetabolitesID {
// newData2.put("P54862", newData.get("P54862"));
// newData2.put("P27243", newData.get("P27243"));
// new PopulateTriageNeo4jDatabase(newData);
/////TRIAGE
......@@ -209,10 +222,10 @@ public class WriteByMetabolitesID {
//
//
// FileUtils.saveMapInFile2("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getMetabolitesIDs2.txt", namesAndIDsContainer.getMetabolitesIDs());
// FileUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCase2.txt", namesAndIDsContainer.getNamesLowerCase());
// FileUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCaseWithoutSigns2.txt", namesAndIDsContainer.getNamesLowerCaseWithoutSigns());
// FileUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesWithoutSigns2.txt", namesAndIDsContainer.getNamesWithoutSigns());
// FileUtils.saveMapInFile2("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getMetabolitesIDs3.txt", namesAndIDsContainer.getMetabolitesIDs());
// FileUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCase3.txt", namesAndIDsContainer.getNamesLowerCase());
// FileUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCaseWithoutSigns3.txt", namesAndIDsContainer.getNamesLowerCaseWithoutSigns());
// FileUtils.saveMapInFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesWithoutSigns3.txt", namesAndIDsContainer.getNamesWithoutSigns());
// System.out.println(namesAndIDsContainer.getMetabolitesIDs().get("Cu2+"));
......@@ -554,6 +567,7 @@ public class WriteByMetabolitesID {
e.printStackTrace();
}
return compounds;
}
......@@ -577,11 +591,11 @@ public class WriteByMetabolitesID {
if(useCache) {
namesLowerCaseWithoutSigns = FilesUtils.readMapFromFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCaseWithoutSigns2.txt");
namesWithoutSigns = FilesUtils.readMapFromFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesWithoutSigns2.txt");
namesLowerCase = FilesUtils.readMapFromFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCase2.txt");
namesLowerCaseWithoutSigns = FilesUtils.readMapFromFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCaseWithoutSigns3.txt");
namesWithoutSigns = FilesUtils.readMapFromFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesWithoutSigns3.txt");
namesLowerCase = FilesUtils.readMapFromFile("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getNamesLowerCase3.txt");
compounds = FileUtils.readMapFromFile2("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getMetabolitesIDs2.txt");
compounds = FileUtils.readMapFromFile2("C:\\Users\\Davide\\Documents\\InternalDB\\info\\getMetabolitesIDs3.txt");
return new BiosynthMetabolites(compounds, namesLowerCaseWithoutSigns, namesWithoutSigns, namesLowerCase);
}
......@@ -619,8 +633,13 @@ public class WriteByMetabolitesID {
// System.out.println("found ecoli >>>> " + names);
if(!names.isEmpty()) {
MetaboliteMajorLabel label = MetaboliteMajorLabel.valueOf(nodeProperties.get("major_label").toString());
MetaboliteMajorLabel label;
if(entryID.contains("ECOLI:"))
label = MetaboliteMajorLabel.EcoCyc;
else
label = MetaboliteMajorLabel.valueOf(nodeProperties.get("major_label").toString());
if(nodeProperties.containsKey("formula"))
formula = nodeProperties.get("formula").toString();
......@@ -743,6 +762,13 @@ public class WriteByMetabolitesID {
e.printStackTrace();
}
if(compounds.containsKey("acyl-coenzyme a"))
compounds.get("acyl-coenzyme a").put(MetaboliteMajorLabel.MetaCyc, "META:ACYL-COA");
if(compounds.containsKey("acyl-Coenzyme a"))
compounds.get("acyl-Coenzyme a").put(MetaboliteMajorLabel.MetaCyc, "META:ACYL-COA");
return new BiosynthMetabolites(compounds, namesLowerCaseWithoutSigns, namesWithoutSigns, namesLowerCase);
}
......
......@@ -41,11 +41,13 @@ public class IdentifyReactionsMetabolites {
this.dictionary = new Synonyms();
Set<String> tcdbMetabolites = getMetabolitesFromReactions(reactionsData);
// Set<String> tcdbMetabolites = getMetabolitesFromReactions(reactionsData);
metabolites = getMetabolitesFromReactions(reactionsData).keySet();
logger.info("Total metabolites for search: {}", tcdbMetabolites.size());
logger.info("Total metabolites for search: {}", metabolites.size());
getMetabolitesIDs(tcdbMetabolites, namesAndIDsContainer, service);
getMetabolitesIDs(namesAndIDsContainer, service);
logger.info("Total found: {}", tcdbMetabolitesIDs.size());
......@@ -58,14 +60,14 @@ public class IdentifyReactionsMetabolites {
* @param allMetabolitesByName
* @return
*/
public Map<String, Map<String, MetaboliteMajorLabel>> getMetabolitesIDs(Set<String> metabolitesFromFile, BiosynthMetabolites namesAndIDsContainer, BiodbGraphDatabaseService service) {
public Map<String, Map<String, MetaboliteMajorLabel>> getMetabolitesIDs(BiosynthMetabolites namesAndIDsContainer, BiodbGraphDatabaseService service) {
tcdbMetabolitesIDs = new HashMap<>();
this.forChildsSearch = new HashMap<>();
// Set<String> forSearch = new HashSet<>(metabolites);
metabolites = new HashSet<>(standardizationOfNames1(metabolitesFromFile));
// metabolites = new HashSet<>(standardizationOfNames1(metabolitesFromFile, dictionary));
namesAndIDsContainer = standardizationOfNames2(namesAndIDsContainer);
......@@ -115,12 +117,15 @@ public class IdentifyReactionsMetabolites {
private void saveMetabolite(String metabolite, Map<MetaboliteMajorLabel, String> ids) {
MetaboliteMajorLabel id = selectMetaboliteMajorLabel(metabolite, ids);
if(id != null) {
Map<String, MetaboliteMajorLabel> map = new HashMap<>();
map.put(ids.get(id), id);
if(id.equals(MetaboliteMajorLabel.EcoCyc))
map.put(ids.get(id), MetaboliteMajorLabel.MetaCyc);
else
map.put(ids.get(id), id);
tcdbMetabolitesIDs.put(metabolite, map);
metabolites.remove(metabolite);
......@@ -342,9 +347,9 @@ public class IdentifyReactionsMetabolites {
* @param data
* @return
*/
private Set<String> getMetabolitesFromReactions(Map<String, Set<TcNumberContainer2>> data){
private Map<String, Set<String>> getMetabolitesFromReactions(Map<String, Set<TcNumberContainer2>> data){
Set<String> metabolites = new HashSet<>();
Map<String, Set<String>> metabolites = new HashMap<>();
for(String accession : data.keySet()) {
......@@ -356,7 +361,7 @@ public class IdentifyReactionsMetabolites {
String reaction = reactionContainer.getReaction();
metabolites.addAll(getMetabolitesToBeReplaced(reaction));
metabolites.putAll(getMetabolitesToBeReplaced(reaction, dictionary));
}
}
}
......@@ -371,7 +376,7 @@ public class IdentifyReactionsMetabolites {
* @param reaction
* @return
*/
public static Set<String> getMetabolitesToBeReplaced(String reaction){
public static Map<String, Set<String>> getMetabolitesToBeReplaced(String reaction, Synonyms dictionary){
Set<String> metabolites = new HashSet<>();
......@@ -382,13 +387,11 @@ public class IdentifyReactionsMetabolites {
for(String metab : metabs) {
metab = metab.replaceAll("^(\\+\\s)", "");
metab = metab.replaceAll("^(\\+\\s)", "").replaceAll("^(\\d+)", "");
metabolites.add(metab.trim());
}
return metabolites;
return standardizationOfNames3(metabolites, dictionary);
}
/**
......@@ -397,12 +400,10 @@ public class IdentifyReactionsMetabolites {
* @param metabolites
* @return
*/
private static Set<String> standardizationOfNames1(Set<String> metabolites) {
private static Set<String> standardizationOfNames1(Set<String> metabolites, Synonyms dictionary) {
Set<String> standardNames = new HashSet<>();
Synonyms dictionary = new Synonyms();
for(String metabolite : metabolites) {
if(metabolite.matches("(?i).+(-P)$"))
......@@ -475,6 +476,52 @@ public class IdentifyReactionsMetabolites {
return namesAndIDsContainer;
}
/**
* Auxiliar method for normalization of names.
*
* @param metabolites
* @return
*/
private static Map<String, Set<String>> standardizationOfNames3(Set<String> metabolites, Synonyms dictionary) {
Map<String, Set<String>> standardNames = new HashMap<>();
for(String metabolite : metabolites) {
String original = metabolite;
if(metabolite.matches("(?i).+(-P)$"))
metabolite = metabolite.replaceAll("(?i)(-P)$", "\\sphosphate");
metabolite = metabolite.replaceAll("(?i)(ic acids*)", "ate");
String word = dictionary.getSynonym(metabolite.replaceAll("\\s+", "").toLowerCase());
if(word != null) {
if(standardNames.containsKey(word))
standardNames.get(word).add(original);
else {
Set<String> set = new HashSet<>();
set.add(original);
standardNames.put(word, set);
}
}
else {
if(standardNames.containsKey(metabolite))
standardNames.get(metabolite).add(original);
else {
Set<String> set = new HashSet<>();
set.add(original);
standardNames.put(metabolite, set);
}
}
}
return standardNames;
}
/**
* Get the best database to retrieve the key
......@@ -483,6 +530,19 @@ public class IdentifyReactionsMetabolites {
* @return
*/
private MetaboliteMajorLabel selectMetaboliteMajorLabel(String metabolite, Map<MetaboliteMajorLabel, String> ids){
// if(metabolite.equalsIgnoreCase("AMP"))
// System.out.println(metabolite + "\t" + ids);
// if(metabolite.equalsIgnoreCase("Fatty acid"))
// System.out.println(metabolite + "\t" + ids);
// if(metabolite.equalsIgnoreCase("Coenzyme A"))
// System.out.println(metabolite + "\t" + ids);
// if(metabolite.equalsIgnoreCase("acyl-Coenzyme A"))
// System.out.println(metabolite + "\t" + ids);
// if(metabolite.equalsIgnoreCase("Diphosphate"))
// System.out.println(metabolite + "\t" + ids);
// if(metabolite.equalsIgnoreCase("ATP"))
// System.out.println(metabolite + "\t" + ids);
try {
......@@ -495,16 +555,25 @@ public class IdentifyReactionsMetabolites {
forChildsSearch.put(metabolite, entry);
}
else if(ids.containsKey(MetaboliteMajorLabel.EcoCyc)) { //ecocyc after metacyc
if(ids.containsKey(MetaboliteMajorLabel.ModelSeed))
return MetaboliteMajorLabel.ModelSeed;
else if(ids.containsKey(MetaboliteMajorLabel.MetaCyc))
String[] entry = new String[2];
entry[0] = ids.get(MetaboliteMajorLabel.MetaCyc);
entry[1] = MetaboliteMajorLabel.MetaCyc.toString();
forChildsSearch.put(metabolite, entry);
}
if(ids.containsKey(MetaboliteMajorLabel.MetaCyc))
return MetaboliteMajorLabel.MetaCyc;
else if(ids.containsKey(MetaboliteMajorLabel.EcoCyc))
return MetaboliteMajorLabel.EcoCyc;
if(ids.containsKey(MetaboliteMajorLabel.ModelSeed))
return MetaboliteMajorLabel.ModelSeed;
else if(ids.containsKey(MetaboliteMajorLabel.LigandCompound))
return MetaboliteMajorLabel.LigandCompound;
......
package reactions;
import java.io.File;
import java.sql.Time;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
......@@ -9,14 +13,18 @@ import java.util.Set;
import org.neo4j.graphdb.GraphDatabaseService;
import org.neo4j.graphdb.Node;
import org.neo4j.graphdb.Relationship;
import org.neo4j.graphdb.Transaction;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import blast.Blast;
import edu.uci.ics.jung.algorithms.scoring.HITSWithPriors;
import enumerators.TypeOfTransporter;
import files.FilesUtils;
import internalDB.WriteByMetabolitesID;
import javafx.util.Pair;
import pt.uminho.ceb.biosystems.merlin.bioapis.externalAPI.ebi.uniprot.TaxonomyContainer;
import pt.uminho.ceb.biosystems.merlin.utilities.containers.capsules.AlignmentCapsule;
import tcdb.capsules.GeneContainer;
import tcdb.capsules.ReactionContainer;
......@@ -25,38 +33,59 @@ import triageDatabase.TriageGraphDatabaseService;
import triageDatabase.TriageNeo4jInitializer;
import triageDatabase.TriageNodeLabel;
import triageDatabase.TriageRelationshipType;
import utilities.UniprotAPIExtension;
import utilities.triage_utilities.Properties;
import utilities.triage_utilities.Reports;
import utilities.triage_utilities.Utilities;
public class ProvideTransportReactionsToGenes {
// private static final String TAXONOMY_BY_TAXID = "C:\\Users\\Davide\\Documents\\reactionsBuilderTriage\\taxonomy_By_taxID.txt";
// private static final String ORGANISM_BY_TAXID = "C:\\Users\\Davide\\Documents\\reactionsBuilderTriage\\organism_By_taxID.txt";
private Map<String, List<AlignmentCapsule>> blastResults;
private TriageGraphDatabaseService service;
private Map<String, Set<String>> homologousGenes;
// private Map<String, Set<String>> homologousGenes;
private String[] taxonomy;
private String organism;
private Map<String, Set<ReactionContainer>> reactionContainers;
// private Map<String, Map<String, Set<ReactionContainer>>> reactionContainers;
private Map<String, String[]> taxonomies;
private Map<String, String> organisms;
Map<String, Set<String>> results;
private Map<String, Set<String>> resultsByEvalue;
private Map<String, List<String>> mainReactions;
private Map<String, Set<String>> reactionsByTcNumber;
private Set<String> hitsWithoutReactions;
private Map<String, Map<String, Set<String>>> finalResults;
private Map<String, ReactionContainer> reactionContainersByID;
private Properties properties;
private Integer taxID;
private Integer queryFileTotalOfGenes;
private String jobIdentification;
private Set<String> tcNumbersNotPresentInTRIAGEdatabase; //tcNumbers present in this set are not yet in the neo4j database (solution: update the database)
private static final Logger logger = LoggerFactory.getLogger(WriteByMetabolitesID.class);
public ProvideTransportReactionsToGenes() {
public ProvideTransportReactionsToGenes(Integer taxID, String queryPath, Properties properties) {
logger.info("TRIAGE initialized!");
homologousGenes = new HashMap<>();
reactionContainers = new HashMap<>();
// homologousGenes = new HashMap<>();
// reactionContainers = new HashMap<>();
taxonomies = new HashMap<>();
organisms = new HashMap<>();
tcNumbersNotPresentInTRIAGEdatabase = new HashSet<>();
taxonomy = "Eukaryota, Fungi, Dikarya, Ascomycota, Saccharomycotina, Saccharomycetes, Saccharomycetales, Saccharomycetaceae, Kluyveromyces".split(","); //usar taxonomy do renato
organism = "Kluyveromyces lactis (strain ATCC 8585 / CBS 2359 / DSM 70799 / NBRC 1267 / NRRL Y-1140 / WM37)";
this.properties = properties;
this.taxID = taxID;
this.jobIdentification = new File(queryPath).getName().replace(".faa", "");
findTaxonomyByTaxonomyID(taxID);
try {
Blast blast = new Blast();
Blast blast = new Blast(queryPath, properties); //replace the null by the query file path
blastResults = blast.getAlignmentsByQuery();
queryFileTotalOfGenes = blast.getQueryFileSize();
GraphDatabaseService graphDatabaseService = TriageNeo4jInitializer.getDatabaseService();
......@@ -66,29 +95,27 @@ public class ProvideTransportReactionsToGenes {
Transaction dataTx = graphDatabaseService.beginTx();
@SuppressWarnings("resource")
Scanner reader = new Scanner(System.in);
// @SuppressWarnings("resource")
// Scanner reader = new Scanner(System.in);
int n = 1;
// int n = 1;
while (n != 99) {
start();
System.out.println("Insert a number to repeat or 99 to finish");
try {
n = reader.nextInt();
} catch (Exception e) {
e.printStackTrace();
n = reader.nextInt();
}
// while (n != 99) {
start();
// System.out.println("Insert a number to repeat or 99 to finish");
}
// try {
// n = reader.nextInt();
// } catch (Exception e) {
// e.printStackTrace();
//
// n = reader.nextInt();
// }
//
// }
dataTx.close();
service.shutdown();
......@@ -103,189 +130,440 @@ public class ProvideTransportReactionsToGenes {
}
}
private void start() {
getTaxonomies();
private void findTaxonomyByTaxonomyID(Integer taxID) {
buildReactionContainersForBlastResults();
Map<Integer, String> taxonomyFile = FilesUtils.readMapFromFile3(properties.getTaxonomiesFilePath());
Map<Integer, String> organismFile = FilesUtils.readMapFromFile3(properties.getOrganismsFilePath());
logger.debug("Gene containers creation initiated.");
if(taxonomyFile.containsKey(taxID) && organismFile.containsKey(taxID)) {
Map<String, GeneContainer> data = buildGenesContainers();
taxonomy = taxonomyFile.get(taxID).replaceAll("\\[", "").replaceAll("\\]", "").split(", ");
organism = organismFile.get(taxID);
logger.debug("All gene containers created.");
results = ReactionsPredictor.getReactionsForGenes(data, reactionContainers, blastResults);
logger.debug("Reactions search complete!");
}
else{
TaxonomyContainer uniprot = UniprotAPIExtension.getTaxonomyFromNCBITaxnomyID(taxID, 0);
if(uniprot != null) {
organism = uniprot.getSpeciesName();
taxonomy = uniprot.getTaxonomy().toString().replaceAll("\\[", "").replaceAll("\\]", "").split(", ");
taxonomyFile.put(taxID, Arrays.toString(taxonomy));
organismFile.put(taxID, organism);
FilesUtils.saveMapInFile2(properties.getTaxonomiesFilePath(), taxonomyFile);
FilesUtils.saveMapInFile2(properties.getOrganismsFilePath(), organismFile);
}
else {
//IMPLEMENTAR METODO QUE PEDE PESSOA PARA INSERIR MANUALMENTE
logger.error("Taxonomy ID not recognized by UniProt! Please insert a valid TaxonomyID!");
logger.info("SHUTING DOWN TRIAGE...");
System.exit(0);
}
}
logger.info("Taxonomy: {}", Arrays.toString(taxonomy));
logger.info("Organism: {}", organism);