In Biojava, and I assume other Bio* projects? Indexes for sequences positions using the standard API are 1-based inclusive rather than the more standard 0-based exclusive on the top end. This means if you are extracting a subsequence up to a certain number of leading bases which match something else, say, you end up having to be careful , as you can't call .subSeqeuence(0,-1) which throws an exception rather than returning an empty sequence (as .substring(0,0) would).
Is there a particular reason for this design choice? It seems confusing as it is counter-intuitive to other programming indexing systems.
I don't think there really is a reason it chose to use 1-based arrays. Perhaps because gene sequences are 1-based inclusive and they wanted arrays to be reflective of that.
Really? Biopython sequences are definitely zero-based, NOT one-based. This is to follow Python conventions.