**Main changes:**
_ChromDynamics.py:_
- addAdditionalForces() : one can add force objects after the system and context has been initialized
- addCylindricalConfinement(): method to add confining external potential that is cylindrical
- addCorrelatedNoise(): active noise can be added to the simulation object
- addHarmonicBonds(): Harmonic bonds for nearest neighbors
- addSelfAvoidance(): repulsive softcore without diverging LJ
_Optimization.py:_
- modified cutoff into cutoff_low and cutoff_high in getPars
- added norm in getPars -- normalization of input hic is now optional
- get_lambdas_IC() def now computes and returns the new lambdas
- Ideal Chromosome list of beads to be trained now should be informed in the initialization of CustomMiChroMTraining class by the new variable IClist.
- get_lambdas_IC() and get_lambdas_types() def's now has the boolean variable write_error that computes the tolerance and Pearson correlation of the inversion and write in the output file tolerance_and_pearson.
_Integrators.py:_
- added integrator object CustomBrownianIntegrator that uses active noise
**Minor changes:**
- added Active Chromosome Dynamics tutorial to run correlated noise simulations
- CustomMiChroMTraining() had its variable and def names standardized, mainly for the Types and Ideal Chromosome training procedure
- added a tutorial for the Ideal Chromosome potential term
- New scripts were included in the tutorial folder for the MiChroM training procedure on GPU-based clusters.