1 package fr.orsay.lri.varna.factories;
3 import java.io.BufferedReader;
4 import java.io.FileNotFoundException;
5 import java.io.FileReader;
6 import java.io.IOException;
7 import java.io.InputStreamReader;
9 import java.io.UnsupportedEncodingException;
10 import java.net.MalformedURLException;
12 import java.net.URLConnection;
13 import java.util.ArrayList;
14 import java.util.HashMap;
15 import java.util.LinkedHashMap;
19 public class StockholmIO {
20 public static RNAAlignment readAlignementFromFile(String path) throws IOException
22 return StockholmIO.readAlignement(new BufferedReader(new FileReader(path)));
24 public static RNAAlignment readAlignementFromURL(String url) throws UnsupportedEncodingException, IOException
26 URL urlAb = new URL(url);
27 URLConnection urlConn = urlAb.openConnection();
28 urlConn.setUseCaches(false);
29 Reader r = new InputStreamReader(urlConn.getInputStream(),"UTF-8");
30 return readAlignement(new BufferedReader(r));
34 /*public static Alignment readAlignement(Reader r) throws IOException
36 return readAlignement(new BufferedReader(r));
39 public static RNAAlignment readAlignement(BufferedReader r) throws IOException
41 LinkedHashMap<String,StringBuffer> rawSeqs = new LinkedHashMap<String,StringBuffer>();
42 RNAAlignment result = new RNAAlignment();
43 String line = r.readLine();
48 if (!line.startsWith("#"))
50 String[] data = line.split("\\s+");
53 String seqName = data[0].trim();
54 String seq = data[1].trim();
55 if (!rawSeqs.containsKey(seqName))
57 rawSeqs.put(seqName,new StringBuffer());
59 StringBuffer val = rawSeqs.get(seqName);
64 else if (line.startsWith("#"))
66 String[] data = line.split("\\s+");
67 if (line.startsWith("#=GC SS_cons"))
69 str += data[2].trim();
71 else if (line.startsWith("#=GS"))
73 if (data[2].trim().equals("AC"))
75 result.setAccession(data[1].trim(),data[3].trim());
83 result.setSecStr(str);
84 for(Map.Entry<String,StringBuffer> entry : rawSeqs.entrySet())
86 String s = entry.getValue().toString();
87 result.addSequence(entry.getKey(), s);