All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pl.poznan.put.structure.QuantifiedBasePair Maven / Gradle / Ivy

package pl.poznan.put.structure;

import org.immutables.value.Value;
import pl.poznan.put.notation.BPh;
import pl.poznan.put.notation.BR;
import pl.poznan.put.notation.LeontisWesthof;
import pl.poznan.put.notation.Saenger;
import pl.poznan.put.rna.InteractionType;

/** A base pair which is classified and quantified with numerical parameters. */
@Value.Immutable
public abstract class QuantifiedBasePair implements ClassifiedBasePair {
  @Value.Parameter(order = 1)
  public abstract BasePair basePair();

  @Value.Default
  public InteractionType interactionType() {
    return ClassifiedBasePair.super.interactionType();
  }

  @Value.Default
  public Saenger saenger() {
    return ClassifiedBasePair.super.saenger();
  }

  @Value.Default
  public LeontisWesthof leontisWesthof() {
    return ClassifiedBasePair.super.leontisWesthof();
  }

  @Value.Default
  public BPh bph() {
    return ClassifiedBasePair.super.bph();
  }

  @Value.Default
  public BR br() {
    return ClassifiedBasePair.super.br();
  }

  @Value.Default
  @Value.Auxiliary
  public boolean isRepresented() {
    return ClassifiedBasePair.super.isRepresented();
  }

  @Override
  public ClassifiedBasePair invert() {
    return ImmutableQuantifiedBasePair.copyOf(this)
        .withBasePair(basePair().invert())
        .withInteractionType(interactionType().invert())
        .withLeontisWesthof(leontisWesthof().invert());
  }

  /** @return The value of shear parameter. */
  @Value.Parameter(order = 2)
  @Value.Auxiliary
  public abstract double shear();

  /** @return The value of stretch parameter. */
  @Value.Parameter(order = 3)
  @Value.Auxiliary
  public abstract double stretch();

  /** @return The value of stagger parameter. */
  @Value.Parameter(order = 4)
  @Value.Auxiliary
  public abstract double stagger();

  /** @return The value of buckle parameter. */
  @Value.Parameter(order = 5)
  @Value.Auxiliary
  public abstract double buckle();

  /** @return The value of propeller parameter. */
  @Value.Parameter(order = 6)
  @Value.Auxiliary
  public abstract double propeller();

  /** @return The value of opening parameter. */
  @Value.Parameter(order = 7)
  @Value.Auxiliary
  public abstract double opening();
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy