-
- public String replaceOddGaps(String oldStr){
- String patternStr = "[^([{<>}])]";
- String replacementStr = ".";
- Pattern pattern = Pattern.compile(patternStr);
- Matcher matcher = pattern.matcher(oldStr);
- String newStr=matcher.replaceAll(replacementStr);
- return newStr;
- }
-
- public RNA trimRNA(RNA rna){
- ShiftList offset=new ShiftList();
- RNA rnaTrim = new RNA("trim_"+rna.getName());
- try {
- rnaTrim.setRNA(rna.getSeq(),replaceOddGaps(rna.getStructDBN()));
- } catch (ExceptionUnmatchedClosingParentheses e2) {
- e2.printStackTrace();
- } catch (ExceptionFileFormatOrSyntax e3) {
- e3.printStackTrace();
- }
-
- StringBuffer seq=new StringBuffer(rnaTrim.getSeq());
- StringBuffer struc=new StringBuffer(rnaTrim.getStructDBN());
- int ofstart=-1,sleng=rnaTrim.getSeq().length();
- for(int i=0;i<sleng;i++){
- //TODO: Jalview utility for gap detection java.utils.isGap()
- //TODO: Switch to jalview rna datamodel
- if(jalview.util.Comparison.isGap(seq.charAt(i))){
- if (ofstart==-1)
- {
- ofstart=i;
- }
- if(!rnaTrim.findPair(i).isEmpty()){
- int m=rnaTrim.findPair(i).get(1);
- int l=rnaTrim.findPair(i).get(0);
-
- struc.replace(m, m+1, "*");
- struc.replace(l, l+1, "*");
- }else{
- struc.replace(i, i+1, "*");
- }
- } else {
- if (ofstart>-1)
- {
- offset.addShift(ofstart, ofstart-i);
- ofstart=-1;
- }
- }
- }
- // final gap
- if (ofstart>-1)
- {
- offset.addShift(ofstart, ofstart-sleng);
- ofstart=-1;
- }
- String newSeq=rnaTrim.getSeq().replace("-", "");
- rnaTrim.getSeq().replace(".", "");
- String newStruc=struc.toString().replace("*", "");
-
- try {
- rnaTrim.setRNA(newSeq,newStruc);
- registerOffset(rnaTrim,offset);
- } catch (ExceptionUnmatchedClosingParentheses e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (ExceptionFileFormatOrSyntax e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return rnaTrim;
- }
- Map<RNA,SequenceI> seqs=new Hashtable<RNA,SequenceI>();
- Map<RNA,ShiftList> offsets=new Hashtable<RNA,ShiftList>();
- Map<RNA,ShiftList> offsetsInv=new Hashtable<RNA,ShiftList>();
- private void registerOffset(RNA rnaTrim, ShiftList offset)