ClusterMain.h
上传用户:szb0815
上传日期:2007-06-13
资源大小:338k
文件大小:13k
源码类别:

生物技术

开发平台:

C++ Builder

  1. //---------------------------------------------------------------------------
  2. #ifndef ClusterMainH
  3. #define ClusterMainH
  4. //---------------------------------------------------------------------------
  5. #include <Classes.hpp>
  6. #include <Controls.hpp>
  7. #include <StdCtrls.hpp>
  8. #include <Forms.hpp>
  9. #include <Dialogs.hpp>
  10. #include <ComCtrls.hpp>
  11. #include <NMHttp.hpp>
  12. #include <Psock.hpp>
  13. #include <Registry.hpp>
  14. #include <ExtCtrls.hpp>
  15. #include <Menus.hpp>
  16. #include <Buttons.hpp>
  17. #include <Chart.hpp>
  18. #include <TeEngine.hpp>
  19. #include <TeeProcs.hpp>
  20. #include <Series.hpp>
  21. #include <TeEngine.hpp>
  22. #include <TeeProcs.hpp>
  23. #include <TeeShape.hpp>
  24. //---------------------------------------------------------------------------
  25. /*
  26.   TNode is a simple class for keeping track of objects in binary trees
  27. */
  28. class TNode : public TObject
  29. {
  30.         public:
  31.         __fastcall TNode();
  32.         __fastcall ~TNode();
  33.         bool IsNode;        // IsNode = true if there are children
  34.         TNode *Parent;
  35.         TNode *Child1;
  36.         TNode *Child2;
  37.         AnsiString ID;      // Text identifier of node
  38.         double Length;      // Branch length
  39.         AnsiString __fastcall Newick();
  40.         void __fastcall SetList(TStringList *List)
  41.         {
  42.             if (IsNode == true)
  43.             {
  44.                 Child1->SetList(List);
  45.                 Child2->SetList(List);
  46.             }
  47.             else
  48.             {
  49.                 List->Add(ID);
  50.             }
  51.         }
  52. };
  53. class TMainForm : public TForm
  54. {
  55. __published: // IDE-managed Components
  56.         TOpenDialog *LoadFileDialog;
  57.     TStatusBar *StatusBar1;
  58.     TNMHTTP *NMHTTP1;
  59.     TSaveDialog *DistFileDialogBox;
  60.     TSaveDialog *SaveDialog1;
  61.     TPanel *Panel3;
  62.     TGroupBox *InputGroupBox;
  63.     TButton *LoadFileButton;
  64.     TButton *FileHelp;
  65.     TMainMenu *MainMenu1;
  66.     TMenuItem *About1;
  67.     TLabel *Label13;
  68.     TLabel *Label14;
  69.     TPageControl *MainTabSheet;
  70.     TTabSheet *ClusterTabSheet;
  71.     TPanel *ClusterPanel;
  72.     TLabel *Label4;
  73.     TLabel *Label12;
  74.     TGroupBox *GeneGroupBox;
  75.     TLabel *Label3;
  76.     TCheckBox *CalculateGeneWeightsCheckBox;
  77.     TCheckBox *ClusterGenesCheckBox;
  78.     TComboBox *GeneMetricComboBox;
  79.     TGroupBox *GeneWeightOptionsGroupBox;
  80.     TLabel *Label5;
  81.     TLabel *Label6;
  82.     TEdit *GeneWeightCutoffEdit;
  83.     TEdit *GeneWeightExpEdit;
  84.     TGroupBox *ArrayGroupBox;
  85.     TLabel *Label1;
  86.     TComboBox *ArrayMetricComboBox;
  87.     TCheckBox *ClusterArraysCheckBox;
  88.     TCheckBox *CalculateArrayWeightsCheckBox;
  89.     TGroupBox *ArrayWeightOptionsGroupBox;
  90.     TLabel *Label7;
  91.     TLabel *Label8;
  92.     TEdit *ArrayWeightCutoffEdit;
  93.     TEdit *ArrayWeightExpEdit;
  94.         TButton *AverageLinkageClusterButton;
  95.     TTabSheet *SOMTabSheet;
  96.     TPanel *Panel1;
  97.     TLabel *Label11;
  98.     TGroupBox *Genes;
  99.     TLabel *SOMGenesXDimLabel;
  100.     TLabel *SOMGenesYDimLabel;
  101.     TLabel *SOMGenesTauLabel;
  102.     TLabel *SOMGenesIterationsLabel;
  103.     TEdit *SOMGenesXDimEdit;
  104.     TEdit *SOMGenesYDimEdit;
  105.     TCheckBox *SOMOrganizeGenesCheckBox;
  106.     TEdit *SOMGenesTauEdit;
  107.     TEdit *SOMGenesIterationsEdit;
  108.     TGroupBox *ArraySomGroupBox;
  109.     TLabel *SOMArraysXDimLabel;
  110.     TLabel *SOMArraysYDimLabel;
  111.     TLabel *SOMArraysTauLabel;
  112.     TLabel *SOMArraysIterationsLabel;
  113.     TEdit *SOMArraysXDimEdit;
  114.     TEdit *SOMArraysYDimEdit;
  115.     TCheckBox *SOMOrganizeArraysCheckBox;
  116.     TEdit *SOMArraysTauEdit;
  117.     TEdit *SOMArraysIterationsEdit;
  118.     TButton *MakeSOMButton;
  119.     TTabSheet *FilterTabSheet;
  120.     TGroupBox *FilterDataGroupBox;
  121.     TLabel *Label2;
  122.     TLabel *FilterResultsLabel;
  123.     TButton *Filter;
  124.     TEdit *FilterPercentEdit;
  125.     TCheckBox *FilterPercentCheckBox;
  126.     TCheckBox *FilterSDCheckBox;
  127.     TCheckBox *FilterAbsValCheckBox;
  128.     TCheckBox *FilterMaxMinCheckBox;
  129.     TEdit *FilterSDEdit;
  130.     TEdit *FilterAbsValCountEdit;
  131.     TEdit *FilterMaxMinEdit;
  132.     TEdit *FilterAbsValEdit;
  133.     TButton *AcceptFilterButton;
  134.     TPanel *Panel4;
  135.     TLabel *Label9;
  136.     TLabel *Label10;
  137.     TLabel *RowLabel;
  138.     TLabel *ColumnLabel;
  139.     TLabel *Label15;
  140.     TLabel *Label16;
  141.     TEdit *JobNameEdit;
  142.     TLabel *Label17;
  143.     TMemo *FileNameMemo;
  144.     TTabSheet *AdjustTabSheet;
  145.     TTabSheet *SVDTabSheet;
  146.     TButton *AdjustDataButton;
  147.     TPanel *Panel5;
  148.     TLabel *Label19;
  149.     TCheckBox *MeanCenterGenesCheckBox;
  150.     TCheckBox *MeanCenterArraysCheckBox;
  151.     TPanel *Panel6;
  152.     TCheckBox *MedianCenterArraysCheckBox;
  153.     TCheckBox *MedianCenterGenesCheckBox;
  154.     TLabel *Label18;
  155.     TPanel *Panel7;
  156.     TLabel *Label20;
  157.     TCheckBox *NormalizeArraysCheckBox;
  158.     TCheckBox *NormalizeGenesCheckBox;
  159.     TPanel *Panel8;
  160.     TCheckBox *LogTransformCheckBox;
  161.     TGroupBox *GroupBox1;
  162.     TMemo *Memo2;
  163.     TButton *DoSVDButton;
  164.     TMemo *Memo3;
  165.     TMemo *Memo4;
  166.         TLabel *FractalLabel;
  167.         TButton *CompleteLinkageClusterButton;
  168.         TButton *SingleLinkageClusterButton;
  169.         TButton *ReorderType1Button;
  170.         TButton *SaveButton;
  171.         TTabSheet *KMeansTabSheet;
  172.         TGroupBox *KMeansGroupBox;
  173.         TGroupBox *GroupBox2;
  174.         TGroupBox *GroupBox3;
  175.         TCheckBox *KOrganizeGenesCheckBox;
  176.         TCheckBox *KOrganizeArraysCheckBox;
  177.         TEdit *GenesKEdit;
  178.         TEdit *ArraysKEdit;
  179.         TLabel *Label21;
  180.         TLabel *Label22;
  181.         TEdit *GMaxKCyclesEdit;
  182.         TLabel *Label23;
  183.         TEdit *AMaxKCyclesEdit;
  184.         TLabel *Label24;
  185.         TRadioGroup *GKMethod;
  186.         TRadioGroup *AKMethod;
  187.         TButton *KExecute;
  188.         TSaveDialog *SaveDataDialog;
  189.         TButton *ManualButton;
  190.     void __fastcall LoadFileButtonClick(TObject *Sender);
  191.     void __fastcall AverageLinkageClusterButtonClick(TObject *Sender);
  192.     void __fastcall FileHelpClick(TObject *Sender);
  193.     void __fastcall AboutButtonClick(TObject *Sender);
  194.     void __fastcall CalculateGeneWeightsCheckBoxClick(TObject *Sender);
  195.     void __fastcall GeneWeightCutoffEditExit(TObject *Sender);
  196.     void __fastcall GeneWeightExpEditExit(TObject *Sender);
  197.     void __fastcall CalculateArrayWeightsCheckBoxClick(TObject *Sender);
  198.     void __fastcall ArrayWeightExpEditExit(TObject *Sender);
  199.     void __fastcall ArrayWeightCutoffEditExit(TObject *Sender);
  200.     void __fastcall FormClose(TObject *Sender, TCloseAction &Action);
  201.     void __fastcall ReorderType1ButtonClick(TObject *Sender);
  202.     void __fastcall FormDragDrop(TObject *Sender, TObject *Source,
  203.          int X, int Y);
  204.     void __fastcall FormDragOver(TObject *Sender, TObject *Source,
  205.          int X, int Y, TDragState State, bool &Accept);
  206.     void __fastcall AppMessage(tagMSG &Msg, bool &Handled);
  207.     void __fastcall LoadFile(AnsiString FileName);
  208.     void __fastcall FormDestroy(TObject *Sender);
  209.     void __fastcall FilterClick(TObject *Sender);
  210.     void __fastcall SOMOrganizeGenesCheckBoxClick(TObject *Sender);
  211.     void __fastcall SOMOrganizeArraysCheckBoxClick(TObject *Sender);
  212.     void __fastcall About1Click(TObject *Sender);
  213.     void __fastcall FilterPercentEditExit(TObject *Sender);
  214.     void __fastcall FilterSDEditExit(TObject *Sender);
  215.     void __fastcall FilterAbsValCountEditExit(TObject *Sender);
  216.     void __fastcall FilterAbsValEditExit(TObject *Sender);
  217.     void __fastcall FilterMaxMinEditExit(TObject *Sender);
  218.     void __fastcall AcceptFilterButtonClick(TObject *Sender);
  219.     void __fastcall SOMGenesXDimEditExit(TObject *Sender);
  220.     void __fastcall SOMGenesYDimEditExit(TObject *Sender);
  221.     void __fastcall SOMGenesTauEditExit(TObject *Sender);
  222.     void __fastcall SOMGenesIterationsEditExit(TObject *Sender);
  223.     void __fastcall SOMArraysXDimEditExit(TObject *Sender);
  224.     void __fastcall SOMArraysYDimEditExit(TObject *Sender);
  225.     void __fastcall SOMArraysTauEditExit(TObject *Sender);
  226.     void __fastcall SOMArraysIterationsEditExit(TObject *Sender);
  227.     void __fastcall MakeSOMButtonClick(TObject *Sender);
  228.     void __fastcall AdjustDataButtonClick(TObject *Sender);
  229.     void __fastcall DoSVDButtonClick(TObject *Sender);
  230.         void __fastcall CompleteLinkageClusterButtonClick(TObject *Sender);
  231.         void __fastcall SingleLinkageClusterButtonClick(TObject *Sender);
  232.         void __fastcall KExecuteClick(TObject *Sender);
  233.         void __fastcall SaveButtonClick(TObject *Sender);
  234.         void __fastcall GenesKEditExit(TObject *Sender);
  235.         void __fastcall ArraysKEditExit(TObject *Sender);
  236.         void __fastcall GMaxKCyclesEditExit(TObject *Sender);
  237.         void __fastcall AMaxKCyclesEditExit(TObject *Sender);
  238.         void __fastcall ManualButtonClick(TObject *Sender);
  239. private: // User declarations
  240.     int FRows;
  241.     int FColumns;
  242. protected:
  243.     __fastcall void SetRows(int NewRows)
  244.     {
  245.         FRows = NewRows;
  246.         RowLabel->Caption = NewRows;
  247.     }
  248.     __fastcall void SetColumns(int NewColumns)
  249.     {
  250.         FColumns = NewColumns;
  251.         ColumnLabel->Caption = NewColumns;
  252.     }
  253. public: // User declarations
  254.     __fastcall TMainForm(TComponent* Owner);
  255.     AnsiString NextString(AnsiString *InString);
  256.     unsigned short Correlation(double **Data, bool **Mask, double *Weight,
  257.     bool Centered, bool Absolute, int elem1, int elem2, int ClusterColumns);
  258.     float Correlation(double **Data, bool **Mask, double *Weight,
  259.     int elem1, int elem2, int ClusterColumns);
  260.     unsigned short Distance(double **Data, bool **Mask, double *Weight,     bool Centered, bool Absolute, int elem1, int elem2, int ClusterColumns);     unsigned short Distance(int Metric, double **Data, bool **Mask, double *Weight,     int elem1, int elem2, int DataColumns);     void    Cluster(double **ClusterData, bool **ClusterMask,     int ClusterRows, int ClusterColumns,
  261.     TStringList *TreeFile, double *Order, double *RowWeight, double *ColumnWeight,
  262.     AnsiString *ID, int DistFunction,
  263.     bool CalculateWeights, double WeightCutoff, double WeightPower,
  264.     TStringList *ClusterOrder, TStatusBar *StatusBar,     bool ReturnTNode, TNode *TopNode);
  265.     void    CompactCluster(double **ClusterData, bool **ClusterMask,     int ClusterRows, int ClusterColumns,
  266.     TStringList *TreeFile, double *Order, double *RowWeight, double *ColumnWeight,
  267.     AnsiString *ID, int DistFunction,
  268.     bool CalculateWeights, double WeightCutoff, double WeightPower,
  269.     TStringList *ClusterOrder, TStatusBar *StatusBar,     bool ReturnTNode, TNode *TopNode);
  270.     void    SingleCluster(double **ClusterData, bool **ClusterMask,     int ClusterRows, int ClusterColumns,
  271.     TStringList *TreeFile, double *Order, double *RowWeight, double *ColumnWeight,
  272.     AnsiString *ID, int DistFunction,
  273.     bool CalculateWeights, double WeightCutoff, double WeightPower,
  274.     TStringList *ClusterOrder, TStatusBar *StatusBar,     bool ReturnTNode, TNode *TopNode);
  275.     double*** __fastcall SOM(int X, int Y, double **SOMData, bool **SOMMask,      int SOMRows, int SOMColumns, int SOMIterations);
  276.     double Correlation(double ***Nodes, double **SOMData, bool **SOMMask,        bool Centered, int j, int k, int n, int SOMColumns);
  277.     void SaveDistMatrix(double **ClusterData, bool **ClusterMask, double *ClusterWeight,     int ClusterRows, int ClusterColumns, AnsiString FileName);     void CompDistMatrix(double **ClusterData, bool **ClusterMask, double *ClusterWeight,     int ClusterRows, int ClusterColumns, int NumBins, int NumIterations);
  278.     int * __fastcall DoKMeans(int K, double **KData, bool **KMask,      int KRows, int KColumns, int KMaxIterations, int Method);
  279.     void __fastcall SaveData(AnsiString FileName);
  280.     void __fastcall MakeSOM();     void __fastcall MakeSVD();
  281.     double **GeneData;
  282.     bool **GeneMask;
  283.     AnsiString *UniqID;     AnsiString *GeneName;     //int Rows, Columns;     double *GeneWeight;     double *GeneOrder;     double *ArrayWeight;     double *ArrayOrder;     char ClusterName[256];     AnsiString JobName;     TStringList *Headers;     bool *IsData;     int *InColumn;     AnsiString UniqueID;     double GeneWeightExp, GeneWeightCutoff;
  284.     double ArrayWeightExp, ArrayWeightCutoff;     double FilterPercentVal;     double FilterSDVal;     int FilterAbsValCount;     double FilterAbsValVal;     double FilterMaxMinVal;     bool *Use;
  285.     int UseRows;     int SOMGenesXDim, SOMGenesYDim;     int SOMArraysXDim, SOMArraysYDim;     double SOMGenesTau, SOMArraysTau;     int SOMGenesIterations, SOMArraysIterations;     int GenesK, ArraysK, GMaxKCycles, AMaxKCycles;     __property int Rows = {read=FRows, write=SetRows};     __property int Columns = {read=FColumns, write=SetColumns}; };
  286. //---------------------------------------------------------------------------
  287. extern PACKAGE TMainForm *MainForm;
  288. //---------------------------------------------------------------------------
  289. #endif