begin process at 2010 02 10 05:30:49
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Graphique

 > DIGISPEC : NUMÉRISATION D'ÉLECTROPHORÈSES (SPECTRES ÉLECTROPHORÉTIQUES)

DIGISPEC : NUMÉRISATION D'ÉLECTROPHORÈSES (SPECTRES ÉLECTROPHORÉTIQUES)


 Description

Cliquez pour voir la capture en taille normale
L'électrophorèse est une technique d'analyse chimique qui repose sur la séparation des constituants d'un mélange par un courant électrique. La séparation se fait sur un support plat (genre feuille de cellophane, mais bien sur le support est adapté au mélange à étudier). Les produits, une fois séparés, sont colorés et on voit apparaître des bandes dont l'intensité de coloration renseigne sur la quantité de chaque composant du mélange.
Le logiciel DigiSpec permet d'obtenir une suite de valeur numériques correspondant aux différentes bandes, ces valeurs, une fois traitées, permettent de calculer la composition du mélange analysé.
Principe:
- à l'aide d'un scanner ou d'un appareil photo, il faut créer un fichier image (format BMP)
- l'image est chargée dans DigiSpec
- l'expérimentateur définit le profil à analyser à l'aide de la souris (capture d'écran)
- DigiSpec crée un fichier texte qui peut alors être importé dans un tableur grapheur pour traitement.

Source

  • Le code est dans le ZIP.
  • Dans le ZIP, il y a aussi des images exemples :
  • - 2EL-OEF1.bmp : exemple pris sur le site de Didier Pol
  • - 2EL-OEF1.txt : fichier obtenu avec digispec
  • - 2EL-OEF1.xls : le même fichier importé dans Excel
  • et Ô sacrilège, j'ai aussi mis l'exe... totu simplement parce que certains peuvent vouloir seulement utiliser l'outil sans avoir à recompiler ou à laisser tomber parce qu'ils n'ont pas la bonne version de Delphi (combien de sources ai-je en vain tenté de faire tourner avec mon Delphi 5 et du renoncer parce qu'elles avaient été écrites avec une version plus récnte ou faisaient appel à des composants exotiques !).
  • Pour ceux (et je les espère nombreux) qui voudront savoir comment ça marche, j'ai essayé de commenter, mais...
  • En fait la seule ligne vraiment utile est
  • "Couleur := GetPixel(Form1.Image1.canvas.Handle, X,Y);"
  • dans la boucle de numérisation de la fiche principale, mais que de code à écrire tout autour pour la rendre utilisable!
Le code est dans le ZIP.
Dans le ZIP, il y a aussi des images exemples :
- 2EL-OEF1.bmp : exemple pris sur le site de Didier Pol
- 2EL-OEF1.txt : fichier obtenu avec digispec
- 2EL-OEF1.xls : le même fichier importé dans Excel
et Ô sacrilège, j'ai aussi mis l'exe... totu simplement parce que certains peuvent vouloir seulement utiliser l'outil sans avoir à recompiler ou à laisser tomber parce qu'ils n'ont pas la bonne version de Delphi (combien de sources ai-je en vain tenté de faire tourner avec mon Delphi 5 et du renoncer parce qu'elles avaient été écrites avec une version plus récnte ou faisaient appel à des composants exotiques !).
Pour ceux (et je les espère nombreux) qui voudront savoir comment ça marche, j'ai essayé de commenter, mais...
En fait la seule ligne vraiment utile est 
                            "Couleur := GetPixel(Form1.Image1.canvas.Handle, X,Y);"
dans la boucle de numérisation de la fiche principale, mais que de code à écrire tout autour pour la rendre utilisable! 

 Conclusion

Ce logiciel a été réalisé très rapidement pour des besoins purement didactiques, il auait pu être perfectionné pour intégrer toutes les fonctions du scan jusqu'au traitement, mais ça prenait du temps et nécessitait de réécrire des fontions qui existent déjà dans des logiciels qui font ça très bien. J'aurais pu aussi intégrer un transfert direct (par OLE) dans le tableur, mais je n'ai pas réussi à comprendre comment ça marchait.
- je réalise les scans à l'aide de Paint Shop Pro (la version 4 a été offerte par une revue... et en cherchant bien on peut encore la télécharger librement sur le Web)
- les calculs sont faits avec Excel, mais Open Office Calc doit très bien le faire aussi.
Maintenant, si vous voulez l'outil qui fait tout ça, rendez-vous sur le site de l'académie d'Amiens et téléchargez Mesurim, l'excellent logiciel de mon honorable collègue Jean-François MADRE. Il a eu la patience de tout coder et de tout intégrer et en plus il fait de nouvelles versions. Mais si vous voulez des modificatiopns ou savoir comment il marche, voyez avec l'auteur; par contre, ici vous êtes sur CodeS-SourceS.com: il n'y a rien à demander, tout est donné !

Au fait: je l'ai fait pour numériser des électrophorèses, mais on peut numériser n'importe quelle image présentant des bandes style "code barre" (genre empreintes génétiques par exemple) ou encore chromatographie, spectre d'émission ou d'absorption...

J'adresse mes remerciements à Didier Pol qui m'a demandé de faire ce programme... et donc donné l'idée d'un truc simple et utile, et qui a mis un lien sur son site.

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture DIGIGRAPH OU COMMENT SIMULER UNE TABLE À DIGITALISER AVEC UN...

 Sources de la même categorie

Source avec Zip Source avec une capture EFFET VITRE ET THUMBNAILS SOUS VISTA par Bacterius
Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture THREAD ET BITMAP (DESSIN AU CRAYON) par barbichette
Source avec Zip Source avec une capture ÉCRAN DE VEILLE FEU D'ARTIFICE par barbichette

 Sources en rapport avec celle ci

Source avec Zip Source avec une capture ANAGLYPHEUR OU COMMENT VOIR EN RELIEF LES STÉRÉOSCOPES ANCES... par jfs59
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE... par FFCAST
Source avec Zip Source avec une capture IMAGE DANS UN TDBGRID par HAFTARIFOUAD
Source avec Zip Source avec une capture IMAGE WEBCAM SUR SITE WEB. par titout2
Source avec Zip Source avec une capture DÉFORMER UNE IMAGE AUX DIMENSIONS D'UN QUADRANGLE QUELCONQUE par Spatul

Commentaires et avis

Commentaire de f0xi le 21/02/2007 09:09:20 administrateur CS

je regarderais ça en details plus tard, car ça m'as l'air interressant,
par contre tu peu tout de suite modifier ça :

Function SansExt(const Nom:String):String;
Begin
  result := Copy(Nom, 1, Length(Nom) - Length(ExtractFileExt(Nom)));
end;

et ça :

function RealChaine(const V : single) : string;
var FS : TFormatSettings;
begin
  FS.DecimalSeparator := Sep;
  result := format('%.2f', [V], FS);
end;

et aussi pour simplifier et accelerer le calcul de densité :

function GetDensity(const Color : integer) : single;
var CC : integer;
begin
  CC     := Not Color;
  result := (byte(CC) + byte(CC shr 8) + byte(CC shr 16)) / 7.65;
end;

prefere l'utilisation du type Single ou Extended plutot que le type Real :

PasX, PasY, Densite : Single; (le type real est obsolete)

Commentaire de f0xi le 21/02/2007 09:20:17 administrateur CS



ah et ça aussi :

procedure TForm1.Option1Click(Sender: TObject);
const
  STI : array[boolean] of byte = (0,1);
  ITS : array[boolean] of char = '.,';
begin
Option.RadioGroup1.Itemindex := STI[Sep = ','];
Option.showModal;
Sep := ITS[Option.RadioGroup1.Itemindex = 1];
end;


a la fin du fichier tu peu enlever ça et faire :
begin
  Sep:=','; Action :=Aucune; Donnees:=False;
end.


var
  Form1  : TForm1;
  FC     : Text;
  Action : TAction = Aucune;
  Debut,
  Fin    : TPoint;

implementation

Var Serie      : Byte;
    NomFichier : String;
    Sep        : char    = ',';
    Donnees    : Boolean = False;


et oui, on peu initialiser des variables directement dans la declaration, a partir du moment ou ce sont des variables Globales (cad : en dehors d'une methode < variable locale)

Commentaire de Globus56 le 22/02/2007 10:45:15

Merci f0xi pour ces remarques constructives.
C'est vrai qu'il manque une phase de relecture et d'optimisation de mon code... une fois qu'il faisait ce dont j'avais besoin, je l'ai laissé en l'état.
J'aurai au moins appris quelques "ficelles" comme l'initialisation des variables (au fait, je crois qu'on le faisait déjà en Turbo Pascal en utilisant les constantes typées).
Pareil pour le tyte Real: une vielle habitude...
Les encouragements, ça fait toujours plaisir, mais ça devient si rare!
G56

Commentaire de f0xi le 22/02/2007 11:44:48 administrateur CS

c'est les programmes originaux qui sont rare ... alors la moindre des choses c'est d'aller saluer l'auteur :)

sincerement pour les constantes, je ne les utilises meme plus, sauf quand il faut definir des parametres.

les constantes typées affectable, c'est carrement obsolete de les utiliser ... ça sert a rien sauf a faire galerer le compilo.

Commentaire de PhilLU le 27/08/2007 18:19:00

Bonjour,
j'essaie de compiler digispec, mais je reçois le code d'erreur :
File not found: OleAuto.dcu
qui peux m'aider?
A+
PhilLu.

Commentaire de PhilLU le 27/08/2007 18:33:28

... ensuite la compil me retourne l'erreur:
Incompatible types: TBasicAction and TAction
???
Merci pour votre aide!
A+
Phil.

Commentaire de Globus56 le 27/08/2007 23:25:51

Bonsoir,

Je compile avec Delphi5, les erreurs signalées viennent sans doute de modifications faites par Borland dans les versions suivantes... OleAuto est une unité fournie en standard avec Delphi5, si tu as une autre version de Delphi... soit elle n'existait pas dans les versions antérieures, soit elle a changé de nom dans les versions suivantes... Il faudrait donc reprendre la doc de votre version de Delphi pour voir, mais j'ai bien écrit "il faudrait" car en fait je n'ai jamais pris le tmeps de mettre au point la liaison OLE destinée à envoyer les données directement dane Excel (nécessité de se taper la doc Microsoft, pas vraiment accessible), vous pouvez donc supprimer le code correspondant, soit
- l'item du menu "Exporter dans Excel"
- la procédure correspondante: "TForm1.Exporter1Click" qui de toutes façons ne marche pas.
Pour la seconde erreur, là je ne vois vraiment pas car TAction est un type énuméré déclaré dans l'interface de l'unité principale... si maintenant on n'a plus le droit de déclarer des types en Delphi, où va le monde? Bon, évidemment, le type est utilisé pour déclarer une variable globale ce qui n'est pas joli-joli, mais c'est quand même permis! Pour avancer, il faudrait savoir à quel endroit du code se trouve l'erreur (normalement, le compilateur affiche la ligne fautive) et essayer de comprendre là où ça coince. Attention, la variable globale s'appelle Action_ vérifiez que le "_" se trouve bien partout sauf dans la ligne "procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);" où justement Action (sans "_") est d'un type descendant de TBasicAction.

Merci de vos messages et n'hésitez pas à y revenir si ça ne marche toujours pas. Bon courage pour la programmation Delphi.

F.Borie (Globus56)

Commentaire de PhilLU le 28/08/2007 19:05:24

Merci Globus56!
J'utilise Delphi7 pro,
je teste ça ce soir et te dis quoi,
encore merci,
PhilLu

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Image de fond dans un TreeView [ par Valérie ] Bonjour, J'utilise une application DELPHI6 CLX et je n'aarive pas à avoir une image de fond dans mon TreeView. L'événement OnPaint n'existe pas. Si image du bureau a intervalle regulier [ par tarik ] salut je voudrais faire des sauvegardes de l'etat du bureau (une sorte d'imprime ecran) a intervalle regulier Numérisation [ par Manuel ] Bonjour,Je conçoit un logiciel pour numériser à l'aide de c++ builder5 .J'ai besoin d'aide au niveau des méthodes qui vont intervenir .Si vous avez de image ds un richedit [ par sebrs1 ] comment inserer une image ds un richedit? tbitbtn avec image format jpeg [ par vib ] existe il un composant ou une solution pour avoir un bouton du genre bitbtn avec une image au format jpeg ?A+ Image dans une TStatusBar !!! [ par MAsterC ] Comment fait-on pour mettre un Tprogresbar et un petit dessin dans l'item TStatusBar ????POUR PLUS DE DÉTAILS ALLER VOIR DANS INTERNET EXPLORER EN BAS Sacré Mikey, c jamais ou il est! :: Prob localisation souris [ par Gysmo ] Salut a tous!Voila j'ai creer sur mon prog des bontons avec des TImage superposé. Kan on click ca change d'image, une image bouton normal, une image b Texte sur une image [ par Gysmo ] Comment arrivé à écrir du texte sur une image puis la sauvegarder comme tel??!Merci Imprimer une image et un texte sur la même feuille [ par zeusnul ] Bonjour,J'aimerais pouvoir imprimer une image et un texte sur la même feuille, mais je suis dans l'incapacité de trouver ça dans l'aide de delphi. Je ImageList ... Help ! ;-) [ par HEproduct ] Bonjour, je voudrai stocker des images de trés petites tailles dans une image lit et récupérer les noms dans une list box. Après quoi l'utilisateur en


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,671 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales