package com.github.lindenb.jvarkit.tools.misc; public class IlluminaReadName { public enum Version {V1_4}; private String instrument; private int runId; private String flowCell; private int lane; private int tile; private int x; private int y; private short firstInPair=-1; private boolean fails_filter=false; private int flag; private String index; private IlluminaReadName() { } public String getInstrument() { return instrument; } public String getIndex() { return index; } public String getFlowCell() { return flowCell; } public static IlluminaReadName parse(Version v,String s) { switch(v) { case V1_4: return parse1_4(s); default: return null; } } //@EAS139:136:FC706VJ:2:2104:15343:197393 1:Y:18:ATCACG public static IlluminaReadName parse1_4(String s) { int i0=(s.startsWith("@")?1:0); int i1=1; IlluminaReadName irn=new IlluminaReadName(); i1=s.indexOf(':',i0); if(i1==-1) return null; irn.instrument=s.substring(i0, i1); i0=i1+1; i1=s.indexOf(':',i0); if(i1==-1) return null; irn.runId=Integer.parseInt(s.substring(i0, i1)); i0=i1+1; i1=s.indexOf(':',i0); if(i1==-1) return null; irn.flowCell=s.substring(i0, i1); i0=i1+1; i1=s.indexOf(':',i0); if(i1==-1) return null; irn.lane=Integer.parseInt(s.substring(i0, i1)); i0=i1+1; i1=s.indexOf(':',i0); if(i1==-1) return null; irn.tile=Integer.parseInt(s.substring(i0, i1)); i0=i1+1; i1=s.indexOf(':',i0); if(i1==-1) return null; irn.x=Integer.parseInt(s.substring(i0, i1)); i0=i1+1; i1=s.indexOf(' ',i0); if(i1==-1) return null; irn.y=Integer.parseInt(s.substring(i0, i1)); i0=i1+1; switch(s.charAt(i0)) { case '1':irn.firstInPair=1; break; case '2':irn.firstInPair=2; break; default: break; } i1=i0+1; i0=i1+1; switch(s.charAt(i0)) { case 'Y':irn.fails_filter=true; break; case 'N':irn.fails_filter=false; break; default: break; } i1=i0+1; i0=i1+1; i1=s.indexOf(':',i0); if(i1==-1) return null; irn.flag=Integer.parseInt(s.substring(i0, i1)); i0=i1+1; irn.index=s.substring(i0); return irn; } @Override public String toString() { return ""+instrument+":"+runId+":"+flowCell+":"+lane+":"+tile+":"+x+":"+y+" " +(firstInPair==1?"1":"2")+":"+(fails_filter?'Y':'N')+":"+flag+":"+index ; } }