**50**wrote:

Hello all,

I need a bit of help implementing a circular list or perhaps a circular iteration( whichever can get the job done)

**What is required**

For a given peptide string , find all the possible sub-peptides including single amino acids and print their masses.
For example's sake let's say `A = 1, B = 2, C = 3, D = 4`

eg

*Input: A cyclic peptide* :

`ABCD`

*Output*

```
A B C D AB BC CD DA ABC BCD CDA DABC
1 2 3 4 3 5 7 5 6 9 8 10
```

I initially tried implementing a simple `substr`

based approach. The *pseudocode* is as under. So it is *untested*:

```
my $i =0;
my $j = 1;
my %peptide;
my $len = length $_; # $_ being the input peptide string
while( $i <= $len-1 ) {
my $mass = 0;
while( $j <= $len-1 ){
my $substr = substr $_, $i, $j if ( $i != $len -1 && $j < $len-1 )
my $amino_acid_mass = subMass ($substr) ;
my $mass += $amino_acid_mass;
push @{$peptide{$mass}}, $substr ; # because multiple sub-peptides can have same mass
$j++;
#To perform a very poor version of circular iteration
#if at last element 'N' , take out that element + add it to first 'N-2' elements
if( $j == $len-1 && $i == $len ){
my $substr_L = substr $_, $i, 1;# last 1 element
my $substr_F = substr $_, 0, $j-2 #first 2 elements
my $string = $substr_L.$substr_F # append
#Extract mass and add to the %peptide hash
}
}
$i++;
}
```

Clearly this isn't the most elegant nor a fully working idea. It would break easily at peptide length > 3 ( 0,1,2,3). Furthermore, even the subroutine will break quickly as I realized later that a variable length `$substr`

would be its input.

So I thought perhaps I should implement an array. I searched on how to implement a circular array. This is what I came up with after finding a bit of hint in the Perl Cookbook online... :

```
my @arr = qw/A B C D/;
my $i = 0;
while($i <= $#arr ){
unshift(@arr, pop(@arr) );
say "@arr";
my $y = 0;
my $z = 1;
foreach (@arr){
say "Element : $_";
say "2 elements: $arr[$y]$arr[$z] " if exists $arr[$z];
$y++;
$z++;
}
$i++;
}
```

But really I am stuck now and just cannot figure out what to do next or how to proceed further. I would be really grateful for any help or guidance.

**48k**• written 7.1 years ago by Neal •

**50**

This looks like one of the assignments from Bioinformatics Algorithms on coursera

1.6kIt does...I want to get better at programming. I am stuck in this...

50Right now I am just thinking of working on the assignments ;)

1.6kYes !! And we may get many questions here from Coursera Assignments !! ;)

1.1kAh so long as one wants to improve!

50