/******************************************************************************* * Copyright 2014 Virginia Polytechnic Institute and State University * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. ******************************************************************************/ package edu.vt.vbi.patric.common; import java.util.ArrayList; import org.apache.commons.lang.StringUtils; import edu.vt.vbi.patric.dao.DBShared; import edu.vt.vbi.patric.dao.ResultType; public class FASTAHelper { static DBShared conn_shared = new DBShared(); public static String getFASTANASequence(String fid) { ArrayList<ResultType> sequences = conn_shared.getFastaNASequence(fid); String na_sequence = ""; if (sequences.size() > 1) { for (int i = 0; i < sequences.size(); i++) { na_sequence += sequences.get(i).get("na_sequence"); } } else if (sequences.size() == 1) { na_sequence = sequences.get(0).get("na_sequence"); } if (sequences.get(0).get("is_reversed").equalsIgnoreCase("1")) { na_sequence = getComplement(na_sequence); } if (na_sequence.length() > 0) { na_sequence = StringHelper.chunk_split(na_sequence, 60, "\n"); return getFASTAIdentifier(fid) + "\n" + na_sequence; } else { return ""; } } public static String getFASTAAASequence(String fid) { String aa_sequence = conn_shared.getFastaAASequence(fid); if (aa_sequence != null && aa_sequence.length() > 0) { aa_sequence = StringHelper.chunk_split(aa_sequence, 60, "\n"); return getFASTAIdentifier(fid) + "\n" + aa_sequence; } else { return ""; } } /* * public static String getFASTAAASequence(List fids) { String aa_sequence = conn_shared.getFastaAASequence(fid);; if (aa_sequence.length()>0) { * aa_sequence = StringHelper.chunk_split(aa_sequence, 60, "\n"); return getFASTAIdentifier(fid)+"\n"+aa_sequence; } else { return ""; } } */ public static String getFASTAIdentifier(String fid) { ResultType hashID = conn_shared.getFastaIdentifiers(fid); String id = ""; /* * if (hashID.get("protein_id").equals("")) { id = ">fid|"+hashID.get("na_feature_id" )+"|locus|"+hashID.get("source_id")+ * "| "+hashID.get("product")+" ["+hashID.get("genome_name")+"]"; } else { id = * ">fid|"+hashID.get("na_feature_id")+"|locus|"+hashID.get("source_id" )+ * "|accn|"+hashID.get("protein_id")+"| "+hashID.get("product")+" ["+hashID .get("genome_name")+"]"; } */ id = ">fid|" + hashID.get("na_feature_id") + "|locus|" + hashID.get("source_id") + "| " + hashID.get("product") + " [" + hashID.get("genome_name") + "]"; return id; } public static String getComplement(String sequence) { String reversed = StringUtils.reverse(sequence.toLowerCase()); reversed = reversed.replace('a', 'x'); reversed = reversed.replace('t', 'a'); reversed = reversed.replace('x', 't'); reversed = reversed.replace('c', 'x'); reversed = reversed.replace('g', 'c'); reversed = reversed.replace('x', 'g'); return reversed; } }