# Duplication¶

class `sequencetools.``Duplication`(counts=None, indices=None, period=None)

Duplication.

```>>> operator_ = sequencetools.Duplication(counts=2, period=4)
```
```>>> print(format(operator_))
sequencetools.Duplication(
counts=2,
period=4,
)
```

## Attribute summary¶

 `counts` Gets counts of duplication. `indices` Gets indices of duplication. `period` Gets period of duplication. `__call__`(argument) Calls rotation on argument. `__copy__`(*arguments) Copies Abjad value object. `__eq__`(argument) Is true when all initialization values of Abjad value object equal the initialization values of argument. `__format__`([format_specification]) Formats Abjad object. `__hash__`() Hashes Abjad value object. `__ne__`(argument) Is true when Abjad object does not equal argument. `__repr__`() Gets interpreter representation of Abjad object.

`Duplication.``counts`

Gets counts of duplication.

```>>> operator_ = sequencetools.Duplication(counts=1, period=3)
>>> operator_.counts
1
```

Returns integer or none.

`Duplication.``indices`

Gets indices of duplication.

```>>> operator_ = sequencetools.Duplication(
...     counts=1,
...     indices=(0, -1),
...     )
>>> operator_.indices
(0, -1)
```

Returns integer or none.

`Duplication.``period`

Gets period of duplication.

```>>> operator_ = sequencetools.Duplication(counts=1, period=3)
>>> operator_.period
3
```

Returns integer or none.

## Special methods¶

`Duplication.``__call__`(argument)

Calls rotation on argument.

Example 1. Duplicates once without period.

```>>> operator_ = sequencetools.Duplication(counts=1)
>>> numbers = [1, 2, 3, 4]
>>> operator_(numbers)
[1, 2, 3, 4, 1, 2, 3, 4]
```

Example 2. Duplicates twice without period.

```>>> operator_ = sequencetools.Duplication(counts=2)
>>> pitch_classes = pitchtools.PitchClassSegment([0, 1, 4, 7])
>>> operator_(pitch_classes)
PitchClassSegment([0, 1, 4, 7, 0, 1, 4, 7, 0, 1, 4, 7])
```

Example 3. Duplicates periodically.

```>>> operator_ = sequencetools.Duplication(counts=1, period=3)
>>> pitches = pitchtools.PitchSegment("c' d' e' f' g' a' b' c''")
>>> for pitch in operator_(pitches):
...     pitch
...
NamedPitch("c'")
NamedPitch("d'")
NamedPitch("e'")
NamedPitch("c'")
NamedPitch("d'")
NamedPitch("e'")
NamedPitch("f'")
NamedPitch("g'")
NamedPitch("a'")
NamedPitch("f'")
NamedPitch("g'")
NamedPitch("a'")
NamedPitch("b'")
NamedPitch("c''")
NamedPitch("b'")
NamedPitch("c''")
```

Example 4. Duplicate indices.

```>>> operator_ = sequencetools.Duplication(
...     counts=1,
...     indices=(0, -1),
...     )
>>> pitch_classes = pitchtools.PitchClassSegment([0, 1, 4, 7])
>>> operator_(pitch_classes)
PitchClassSegment([0, 0, 1, 4, 7, 7])
```

Example 5. Duplicate indices periodically.

```>>> operator_ = sequencetools.Duplication(
...     counts=1,
...     indices=(0,),
...     period=2,
...     )
>>> pitch_classes = pitchtools.PitchClassSegment([0, 1, 4, 7, 9])
>>> operator_(pitch_classes)
PitchClassSegment([0, 0, 1, 4, 4, 7, 9, 9])
```

Example 6. Duplicate indices periodically with different counts.

```>>> operator_ = sequencetools.Duplication(
...     counts=(1, 2),
...     indices=(0,),
...     period=2,
...     )
>>> pitch_classes = pitchtools.PitchClassSegment([0, 1, 4, 7, 9])
>>> operator_(pitch_classes)
PitchClassSegment([0, 0, 1, 4, 4, 4, 7, 9, 9])
```

Example 7. Cyclic counts.

```>>> operator_ = sequencetools.Duplication(counts=(0, 1, 2, 3))
>>> pitch_classes = pitchtools.PitchClassSegment([0, 1, 4, 7, 9])
>>> operator_(pitch_classes)
PitchClassSegment([0, 1, 1, 4, 4, 4, 7, 7, 7, 7, 9])
```

Returns new object with type equal to that of argument.

`(AbjadValueObject).``__copy__`(*arguments)

`(AbjadValueObject).``__eq__`(argument)

Is true when all initialization values of Abjad value object equal the initialization values of argument.

Returns true or false.

`(AbjadObject).``__format__`(format_specification='')

Set format_specification to ‘’ or ‘storage’. Interprets ‘’ equal to ‘storage’.

Returns string.

`(AbjadValueObject).``__hash__`()

Returns integer.

`(AbjadObject).``__ne__`(argument)

Is true when Abjad object does not equal argument. Otherwise false.

Returns true or false.

`(AbjadObject).``__repr__`()

Gets interpreter representation of Abjad object.

Returns string.