1) If the new species is an ion which can't be included in the algorithm from Owczarzy et al. 2008 or if it is a new denaturing agent, you have to create a new instance variable of RegisterMethods in the melting.cinfiguration package. The new private static HashMap<String, Class<? extends CorrectionMethod» register all the corrections for the new species.
/** * HasMap formamideCorrection : contains all the methods for * the new species correction. */ private static HashMap<String, Class<? extends CorrectionMethod>> newSpeciesCorrection = new HashMap<String, Class<? extends CorrectionMethod>>();
2) You have to create a new method in RegisterMethods to initialise the new HasMap :
/** * initialises the newSpeciesCorrectionMethod HashMap of * the RegisterMethods object. */ private void initialiseNewSpeciesCorrectionMethod(){ [...] newSpeciesCorrection.put("NewSpeciesCorrection-Name", ClassName.class); }
3) You have to create a new option to give the possibility to change the correction for the new species. You must add a new public static final String in the OptionManagement class to register the name of the new option. (melting.configuration package)
/** * Option name for to change the default correction for the * new species. */ public static final String newSpeciesOption = "Option-Name";
4) Choose a default new species correction for each type of hybridization in the following methods of OptionManagement :
/** * initialises the DNADefaultOptions HashMap of the * OptionManagement object. */ private void initialisesDNADefaultOptions() { [...] this.DNADefaultOptions.put(newSpeciesOption, "DNAdefaultCorrection-Name"); } /** * initialises the RNADefaultOptions HashMap of the * OptionManagement object. */ private void initialiseRNADefaultOptions() { [...] this.RNADefaultOptions.put(newSpeciesOption, "RNAdefaultCorrection-Name"); } /** * initialises the hybridDefaultOptions HashMap of the * OptionManagement object. */ private void initialiseHybridDefaultOptions() { [...] this.hybridDefaultOptions.put(newSpeciesOption, "DNARNAdefaultCorrection-Name"); } /** * initialises the mRNADefaultOptions HashMap of the * OptionManagement object. */ private void initialiseMRNADefaultOptions() { [...] this.mRNADefaultOptions.put(newSpeciesOption, "mRNAdefaultCorrection-Name"); }
5) You have to register the new option in the HashMap registerEnvironmentOptions of OptionManagement. You just have to add the following line into the method private void initialiseRegisterEnvironmentOptions() of OptionManagement :
/** * Initialises the registerEnvironmentOptions HashMap of the * OptionManagement object. */ private void initialiseRegisterEnvironmentOptions(){ [...] registerEnvironmentOptions.add(newSpeciesOption); }
6) You have to register the new species and the new corrections for it in RegisterMethods (melting.configuration package). You must add the following line to the method private void initialiseOtherCorrectionMethod() :
/** * initialises the otherCorrectionMethod HashMap of the * RegisterMethods object. */ private void initialiseOtherCorrectionMethod(){ [...] // create a relationship between the new option and //the corrections registered for the new species. otherCorrection.put(OptionManagement.newSpeciesOption, newSpeciesCorrection); }
7) You have to complete the method public ThermoResult computeOtherMeltingCorrections(Environment environment) of RegisterMethods. This method is important to correct the melting temperature if another ion or denaturing agent species are present :
public ThermoResult computeOtherMeltingCorrections(Environment environment){ [...] // Check if the new species is present in the environment if (environment.getNewSpecies() > 0){ // Get the correction associated with the option name of the // new species. CorrectionMethod newSpeciesCorrection = getCorrectionMethod(OptionManagement.newSpeciesCorrection, environment.getOptions().get(OptionManagement.newSpeciesCorrection)); if (newSpeciesCorrection == null){ throw new NoExistingMethodException("There is no implemented new species correction."); } else if (newSpeciesCorrection.isApplicable(environment)){ environment.setResult (newSpeciesCorrection.correctMeltingResults(environment)); } else { throw new MethodNotApplicableException("The new species correction is not applicable with this environment (option " + OptionManagement.newSpeciesCorrection + ")."); } }
8) Create a new class for the new species corrections as it is explained in the section How to add new corrections for Na, Mg, K, Tris, DMSO and/or formamide.
Computational Neurobiology 2009-08-24