001package com.hfg.bio.seq; 002 003import java.util.HashMap; 004import java.util.Map; 005import java.util.Set; 006 007import com.hfg.bio.AminoAcid; 008import com.hfg.exception.ProgrammingException; 009 010public class AminoAcidComposition 011{ 012 private Map<AminoAcid, int[]> mMap = new HashMap<>(30); 013 014 //-------------------------------------------------------------------------- 015 public void addAll(AminoAcidComposition inAAComposition) 016 { 017 for (Map.Entry<AminoAcid, int[]> entry : inAAComposition.mMap.entrySet()) 018 { 019 increment(entry.getKey(), entry.getValue()[0]); 020 } 021 } 022 023 //-------------------------------------------------------------------------- 024 public void increment(AminoAcid inAA) 025 { 026 increment(inAA, 1); 027 } 028 029 //-------------------------------------------------------------------------- 030 public void increment(AminoAcid inAA, int inAmount) 031 { 032 int[] counter = mMap.computeIfAbsent(inAA, c -> new int[1]); 033 counter[0] += inAmount; 034 } 035 036 //-------------------------------------------------------------------------- 037 public int get(AminoAcid inAA) 038 { 039 int[] counter = mMap.get(inAA); 040 return (null == counter ? 0 : counter[0]); 041 } 042 043 //-------------------------------------------------------------------------- 044 public int size() 045 { 046 return mMap.size(); 047 } 048 049 //-------------------------------------------------------------------------- 050 public Set<AminoAcid> keySet() 051 { 052 return mMap.keySet(); 053 } 054 055 //-------------------------------------------------------------------------- 056 @Override 057 public AminoAcidComposition clone() 058 { 059 AminoAcidComposition cloneObj; 060 try 061 { 062 cloneObj = (AminoAcidComposition) super.clone(); 063 } 064 catch (CloneNotSupportedException e) 065 { 066 throw new ProgrammingException(e); 067 } 068 069 cloneObj.mMap = new HashMap<>(mMap); 070 071 return cloneObj; 072 } 073}