org.biojava.nbio.protmod.ModificationLinkage Maven / Gradle / Ivy
/*
* BioJava development code
*
* This code may be freely distributed and modified under the
* terms of the GNU Lesser General Public Licence. This should
* be distributed with the code. If you do not have a copy,
* see:
*
* http://www.gnu.org/copyleft/lesser.html
*
* Copyright for this code is held jointly by the individual
* authors. These should be listed in @author doc comments.
*
* For more information on the BioJava project and its aims,
* or to join the biojava-l mailing list, visit the home page
* at:
*
* http://www.biojava.org/
*
* Created on Jun 21, 2010
* Author: Jianjiong Gao
*
*/
package org.biojava.nbio.protmod;
import java.util.Collections;
import java.util.List;
public class ModificationLinkage {
private final List components;
private final int indexOfComponent1;
private final int indexOfComponent2;
private final List pdbNameOfPotentialAtomsOnComponent1;
private final List pdbNameOfPotentialAtomsOnComponent2;
private final String labelOfAtomOnComponent1;
private final String labelOfAtomOnComponent2;
/**
*
* @param components {@link Component}s involved in a modification.
* @param indexOfComponent1 index of the first component.
* @param indexOfComponent2 index of the second component.
*/
public ModificationLinkage(
final List components,
final int indexOfComponent1,
final int indexOfComponent2) {
this(components, indexOfComponent1, null,
null, indexOfComponent2, null, null);
}
/**
*
* @param components {@link Component}s involved in a modification.
* @param indexOfComponent1 index of the first component.
* @param labelOfAtomOnComponent1 label of the atom on the first
* component.
* @param indexOfComponent2 index of the second component.
* @param labelOfAtomOnComponent2 label of the atom on the second
* component.
*/
public ModificationLinkage(
final List components,
final int indexOfComponent1,
final String pdbNameOfAtomsOnComponent1,
final int indexOfComponent2,
final String pdbNameOfAtomsOnComponent2) {
this(components, indexOfComponent1,
Collections.singletonList(pdbNameOfAtomsOnComponent1),
null, indexOfComponent2,
Collections.singletonList(pdbNameOfAtomsOnComponent2),
null);
}
/**
*
* @param components {@link Component}s involved in a modification.
* @param indexOfComponent1 index of the first component.
* @param labelOfAtomOnComponent1 label of the atom on the first
* component.
* @param indexOfComponent2 index of the second component.
* @param labelOfAtomOnComponent2 label of the atom on the second
* component.
*/
public ModificationLinkage(
final List components,
final int indexOfComponent1,
final List pdbNameOfPotentialAtomsOnComponent1,
final int indexOfComponent2,
final List pdbNameOfPotentialAtomsOnComponent2) {
this(components, indexOfComponent1, pdbNameOfPotentialAtomsOnComponent1,
null, indexOfComponent2, pdbNameOfPotentialAtomsOnComponent2, null);
}
/**
*
* @param components {@link Component}s involved in a modification.
* @param indexOfComponent1 index of the first component.
* @param pdbNameOfPotentialAtomsOnComponent1 a list of PDB names of
* potential atoms on the first component.
* @param labelOfAtomOnComponent1 label of the atom on the first
* component.
* @param indexOfComponent2 index of the second component.
* @param pdbNameOfPotentialAtomsOnComponent2 a list of PDB names of
* potential atoms on the second component.
* @param labelOfAtomOnComponent2 label of the atom on the second
* component.
*/
public ModificationLinkage(
final List components,
final int indexOfComponent1,
final List pdbNameOfPotentialAtomsOnComponent1,
final String labelOfAtomOnComponent1,
final int indexOfComponent2,
final List pdbNameOfPotentialAtomsOnComponent2,
final String labelOfAtomOnComponent2) {
if (components == null) {
throw new IllegalArgumentException("Null components");
}
if ( indexOfComponent1 < 0)
throw new IllegalArgumentException("indexOfComponent1 has to be >= 0");
if ( indexOfComponent1 >= components.size())
throw new IllegalArgumentException("indexOfComponent1 has to be <= components.size()");
if ( indexOfComponent2 < 0)
throw new IllegalArgumentException("indexOfComponent2 has to be >= 0");
if ( indexOfComponent2 >= components.size())
throw new IllegalArgumentException("indexOfComponent2 [" + indexOfComponent2 + "] has to be <= components.size() [" + components.size()+"]");
if (indexOfComponent1 == indexOfComponent2) {
throw new IllegalArgumentException("No linkage is allowed for an" +
" identical component.");
}
this.components = components;
this.indexOfComponent1 = indexOfComponent1;
this.indexOfComponent2 = indexOfComponent2;
this.pdbNameOfPotentialAtomsOnComponent1 = pdbNameOfPotentialAtomsOnComponent1;
this.pdbNameOfPotentialAtomsOnComponent2 = pdbNameOfPotentialAtomsOnComponent2;
this.labelOfAtomOnComponent1 = labelOfAtomOnComponent1;
this.labelOfAtomOnComponent2 = labelOfAtomOnComponent2;
}
/**
*
* @return index of the first component.
*/
public int getIndexOfComponent1() {
return indexOfComponent1;
}
/**
*
* @return index of the second component.
*/
public int getIndexOfComponent2() {
return indexOfComponent2;
}
/**
*
* @return the first component.
*/
public Component getComponent1() {
return components.get(indexOfComponent1);
}
/**
*
* @return the second component.
*/
public Component getComponent2() {
return components.get(indexOfComponent2);
}
/**
*
* @return a list of PDB names of potential atoms on the first component.
*/
public List getPDBNameOfPotentialAtomsOnComponent1() {
return pdbNameOfPotentialAtomsOnComponent1;
}
/**
*
* @return a list of PDB names of potential atoms on the second component.
*/
public List getPDBNameOfPotentialAtomsOnComponent2() {
return pdbNameOfPotentialAtomsOnComponent2;
}
/**
*
* @return label of the atom on the first component.
*/
public String getLabelOfAtomOnComponent1() {
return labelOfAtomOnComponent1;
}
/**
*
* @return label of the atom on the second component.
*/
public String getLabelOfAtomOnComponent2() {
return labelOfAtomOnComponent2;
}
/**
*
*/
@Override
public String toString() {
Component comp1 = getComponent1();
Component comp2 = getComponent2();
List atom1 = getPDBNameOfPotentialAtomsOnComponent1();
List atom2 = getPDBNameOfPotentialAtomsOnComponent2();
if ( comp1 == null || comp2 == null) {
return "ModificationLinkage: empty";
}
if ( comp1.getPdbccIds() != null && comp2.getPdbccIds() != null) {
return "ModificationLinkage: " + comp1.getPdbccIds().toString()+":"+atom1+"<=>" + comp2.getPdbccIds()+atom2;
} else {
return "ModificationLinkage :"+atom1+"<=>" + atom2;
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy