X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Ffactories%2FStockholmIO.java;fp=srcjar%2Ffr%2Forsay%2Flri%2Fvarna%2Ffactories%2FStockholmIO.java;h=a237251a04be1c4237b78847df30372542e76d92;hb=4f30214e8098748469c6a4269ac2ed6c5750e4b0;hp=0000000000000000000000000000000000000000;hpb=9dabc02511e3a334a5749a504f57f69d6c9017bd;p=jalview.git diff --git a/srcjar/fr/orsay/lri/varna/factories/StockholmIO.java b/srcjar/fr/orsay/lri/varna/factories/StockholmIO.java new file mode 100644 index 0000000..a237251 --- /dev/null +++ b/srcjar/fr/orsay/lri/varna/factories/StockholmIO.java @@ -0,0 +1,91 @@ +package fr.orsay.lri.varna.factories; + +import java.io.BufferedReader; +import java.io.FileNotFoundException; +import java.io.FileReader; +import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; +import java.io.UnsupportedEncodingException; +import java.net.MalformedURLException; +import java.net.URL; +import java.net.URLConnection; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; + + +public class StockholmIO { + public static RNAAlignment readAlignementFromFile(String path) throws IOException + { + return StockholmIO.readAlignement(new BufferedReader(new FileReader(path))); + } + public static RNAAlignment readAlignementFromURL(String url) throws UnsupportedEncodingException, IOException + { + URL urlAb = new URL(url); + URLConnection urlConn = urlAb.openConnection(); + urlConn.setUseCaches(false); + Reader r = new InputStreamReader(urlConn.getInputStream(),"UTF-8"); + return readAlignement(new BufferedReader(r)); + } + + + /*public static Alignment readAlignement(Reader r) throws IOException + { + return readAlignement(new BufferedReader(r)); + }*/ + + public static RNAAlignment readAlignement(BufferedReader r) throws IOException + { + LinkedHashMap rawSeqs = new LinkedHashMap(); + RNAAlignment result = new RNAAlignment(); + String line = r.readLine(); + String str = ""; + + while(line!=null) + { + if (!line.startsWith("#")) + { + String[] data = line.split("\\s+"); + if (data.length>1) + { + String seqName = data[0].trim(); + String seq = data[1].trim(); + if (!rawSeqs.containsKey(seqName)) + { + rawSeqs.put(seqName,new StringBuffer()); + } + StringBuffer val = rawSeqs.get(seqName); + val.append(seq); + } + + } + else if (line.startsWith("#")) + { + String[] data = line.split("\\s+"); + if (line.startsWith("#=GC SS_cons")) + { + str += data[2].trim(); + } + else if (line.startsWith("#=GS")) + { + if (data[2].trim().equals("AC")) + { + result.setAccession(data[1].trim(),data[3].trim()); + + } + } + } + + line = r.readLine(); + } + result.setSecStr(str); + for(Map.Entry entry : rawSeqs.entrySet()) + { + String s = entry.getValue().toString(); + result.addSequence(entry.getKey(), s); + } + return result; + } +}