Ejemplo n.º 1
0
Archivo: barrel.py Proyecto: jksr/bbtm
    def _create_balls_(self, resseqids, resseqs):
        ### barrel geometric
        A = 3.3  # intrastrand Ca distance
        B = 4.4  # interstrand Ca distance
        theta = math.atan(self.shearnum * A / (self.strandnum * B))  # tilt angle
        a = B / (2 * math.sin(math.pi / self.strandnum) * math.cos(theta))  # radius
        b = a / math.tan(theta)  # vertical speed
        c = math.sqrt(a * a + b * b)
        # offset on the neigbouring strand to ensure inter H-bond is perpendicular to the strand
        delta = 2 * math.pi * a * a / (c * self.strandnum)

        for strandidx in range(self.strandnum):
            self.strands.append([])
            for i in range(self.strandlen[strandidx]):
                s = (self.startpos[strandidx] + i) * A + strandidx * delta
                x = a * math.cos(s / c - 2 * math.pi * strandidx / self.strandnum)
                y = a * math.sin(s / c - 2 * math.pi * strandidx / self.strandnum)
                z = b * s / c
                # calculate facing
                if strandidx % 2 == 0:
                    if i % 2 == 0:
                        fac = self.facing[strandidx]
                    else:
                        fac = 3 - self.facing[strandidx]
                else:
                    if (self.strandlen[strandidx] % 2 == 0) != (i % 2 == 0):
                        fac = self.facing[strandidx]
                    else:
                        fac = 3 - self.facing[strandidx]
                        # ball = [ballid, seqid, x, y, z, AAid, facing]
                ball = Ball(
                    [
                        len(self.balls),
                        resseqids.pop(0),
                        x,
                        y,
                        z,
                        aminoacid.getaaid(resseqs.pop(0)),
                        Ball.Facing.In if fac == Ball.Facing.In else Ball.Facing.Out,
                    ]
                )
                self.balls.append(ball)
                self.strands[-1].append(ball)
Ejemplo n.º 2
0
		y = a*math.sin(s/c-2*math.pi*strandidx/barrel.strandnum)
		z = b*s/c
		# calculate facing
		if strandidx%2==0:
			if i%2 == 0:
				fac = barrel.facing[strandidx]
			else:
				fac = 3-barrel.facing[strandidx]
		else:
			if (barrel.strandlen[strandidx]%2==0) != (i%2==0):
				fac = barrel.facing[strandidx]
			else:
				fac = 3-barrel.facing[strandidx]
		# ball = [ballid, seqid, x, y, z, AAid, facing]
		#ball = [len(barrel.balls), resseqids.pop(0), x, y, z, aminoacid.getaaid(resseqs.pop(0)), BallFacing.In if fac==BallFacing.In else BallFacing.Out ]
		ball = Ball([ len(barrel.balls), resseqids.pop(0), x, y, z, aminoacid.getaaid(resseqs.pop(0)), BallFacing.In if fac==BallFacing.In else BallFacing.Out ])
		barrel.balls.append(ball)
		barrel.strands[-1].append(ball)

#print barrel.reg
#print barrel.startpos
#print barrel.strandlen

#sss=0
#for strd in barrel.strands:
#	print 'strand',sss
#	sss+=1
#	tmpstr = ""
#	for ball in strd:
#		tmpstr += str(ball[-1])+"\t"
#	print tmpstr