いくつかの遺伝データを表すデータ構造を書きたいと思っています。このデータは size のリストとして表すことができn
、各エントリには 0 から 1 の間の実数である「遺伝的位置」もあります。命名法を明確にするために、リスト内の位置id
と遺伝的位置を と呼びますgpos
。私がこれを実装した方法は、
class Coords(object):
def __init__(self, *args, **kwargs):
self.f = list(*args, **kwargs)
self.r = dict()
for i,e in enumerate(self.f):
self.r[e] = i
def __setitem__(self,x,y):
self.f.__setitem__(x,y)
self.r.__setitem__(y,x)
def __getitem__(self,x):
return self.f.__getitem__(x)
def __len__(self):
return self.f.__len__()
今、これには2つの問題があります。1 つ目は、self.r のインデックスが float であることです。これは明らかに悪い考えです。文字列(桁数固定)に変換しようと考えていたのですが、何か良い案はありませんか?私が抱えているもう1つの問題は、を介してエントリにアクセスすることを実装したいということですgpos
。たとえば、gpos
0.2から0.4までのすべてにアクセスしたい場合は、
import numpy as np
Coords(np.arange(1,0,-.1))
c.r[0.2:0.4]
それを定義する簡単な方法はありますか?id
二分探索で正しい開始位置と終了位置を見つけてから、self.f
これらのIDを使用してアクセスしようと考えていましたが、上記の構文を実装する方法はありますか?