+sub seq_insert
+{
+ # Martin A. Hansen, June 2009.
+
+ # Randomly duplicates a given number of residues in a given sequence.
+
+ my ( $seq, # sequence to mutate
+ $insertions, # number of residues to insert
+ ) = @_;
+
+ # Returns a string.
+
+ my ( $i, $pos );
+
+ for ( $i = 0; $i < $insertions; $i++ )
+ {
+ $pos = int( rand( length $seq ) );
+
+ substr $seq, $pos, 0, substr $seq , $pos, 1;
+ }
+
+ return $seq;
+}
+
+
+sub seq_delete
+{
+ # Martin A. Hansen, June 2009.
+
+ # Randomly deletes a given number of residues from a given sequence.
+
+ my ( $seq, # sequence to mutate
+ $deletions, # number of residues to delete
+ ) = @_;
+
+ # Returns a string.
+
+ my ( $i, $pos );
+
+ for ( $i = 0; $i < $deletions; $i++ )
+ {
+ $pos = int( rand( length $seq ) );
+
+ substr $seq, $pos, 1, '';
+ }
+
+ return $seq;
+}
+
+