1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
| # -*- coding: utf-8 -*-
"""
Created on Mon Sep 5 15:44:42 2011
@author: jean-pat
"""
#!/usr/bin/env python
#
import os, pygame
from pygame.locals import*
def load_image(name, colorkey=None):
fullname=os.path.join("data", name)
try:
image=pygame.image.load(fullname)
except pygame.error, message:
print "Impossible de charger l'image:",name
raise SystemExit, message
image = image.convert()
if colorkey is not None:
if colorkey is -1:
colorkey = image.get_at((0, 0))
image.set_colorkey(colorkey, RLEACCEL)
return image, image.get_rect()
class Ichrom(pygame.sprite.Sprite):
def __init__(self,image,initpos):
pygame.sprite.Sprite.__init__(self)
self.pos = initpos
self.image,self.rect=image
#self.rect=self.image.get_rect()
print "self.rect",self.rect,"-self.image:",self.image
self.button=(0,0,0)#mouse buttons not pressed
#self.selected = 0
self.mouseover=False
self.focused=False
#self.rect=initpos
print "init chrom at ",self.pos
def rollover(self):
"""Test if the mouse fly over the chromosome
self.mouseover==True if mouse flying over the chrom,
False if not"""
mpos=pygame.mouse.get_pos()#mouseposition
#test if mouse roll over the sprite
if self.rect.collidepoint(mpos):
self.mouseover=True
else:
self.mouseover=False
def update(self):
self.button=pygame.mouse.get_pressed()
mpos = pygame.mouse.get_pos()
self.selected=self.rect.collidepoint(mpos)
#the mouse flies over a chromosome
if (self.mouseover):
#print "mouse pos:",mpos
if self.button==(1,0,0): # )
pos = pygame.mouse.get_pos()
self.rect.center = pos
class Classifier(pygame.sprite.Sprite):
'''When a chrom is moved is moved into a category '''
def __init__(self,initpos,category):
pygame.sprite.Sprite.__init__(self)
self.category=category
self.image = pygame.Surface((100,100))
self.image.set_colorkey((0,0,0))
self.image = self.image.convert_alpha()
#pygame.draw.rect(screen, color, (x,y,width,height), thickness)
pygame.draw.rect(self.image, (255,0,0,255), (0,0,100,100),1)
self.rect= initpos
#self.rect= self.image.get_rect()
def update(self):
pass
#self.pos = (10,10)
#pygame.draw.rect(self.image, (255,0,0,255), (10,50,100,100),2)
def trainClassifier(self):
"""the particles moved inside the square are set into one
category"""
pass
def main():
pygame.init()
screen = pygame.display.set_mode((320,300))
pygame.display.set_caption("Karyotyper")
pygame.mouse.set_visible(True)
background = pygame.Surface(screen.get_size())
background = background.convert()
background.fill((0, 0, 0))
screen.blit(background,(0, 0))
pygame.display.flip()
i1=load_image("/home/claire/Applications/ImagesTest/jp/Jpp48/13/DAPI/particules/part15.png", -1)
i2=load_image("/home/claire/Applications/ImagesTest/jp/Jpp48/13/DAPI/particules/part12.png", -1)
chr1 = Ichrom(i1,(0,0))
#chr1 = Krom(i1,(0,0))
chr2=Ichrom(i2,(30,30))
#chr2=Krom(i2,(30,30))
categ1=Classifier((5,150),"single")
categ2=Classifier((110,150),"overlapping")
categ3=Classifier((215,150),"other stuff")
allsprites = pygame.sprite.RenderPlain((chr1,chr2))
allcategories=pygame.sprite.RenderPlain((categ1,categ2,categ3))
clock = pygame.time.Clock()
while 1:
clock.tick(60)
for event in pygame.event.get():
if event.type == QUIT:
return
elif event.type == KEYDOWN and event.key == K_ESCAPE:
return
if event.type ==pygame.MOUSEBUTTONDOWN:
#need to be modified to handle a list of chromosomes
chr1.rollover()
chr2.rollover()
allsprites.update()
allcategories.update()
##
##Search which chromosome is moved
##into which category and classify
##that chromosome in that category
collision=pygame.sprite.groupcollide(allcategories,allsprites,False,False)
screen.blit(background,(0,0))
allsprites.draw(screen)
allcategories.draw(screen)
pygame.display.flip()
if __name__ == '__main__': main() |
Partager