Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
127 commits
Select commit Hold shift + click to select a range
f400bee
Initial changes and mayavi examples for reference
Feb 28, 2013
179e735
Standardizing common code
Mar 1, 2013
084dc86
Set spaces
Mar 1, 2013
b2a8a88
Combined lineage and xyt viz tools, added to cpa
Mar 1, 2013
b00eb49
Combined lineage, xyt panels into timelapsetool.
Mar 5, 2013
6f12386
More examples
Mar 5, 2013
01a1dfb
Track visibility
Mar 5, 2013
8ed200f
More edits
Mar 6, 2013
4c00c43
Revised node ids. To be continued...
Mar 21, 2013
322a27b
Streamlining code
Mar 25, 2013
dc07478
Integrating Lee's awesome script + add'l fixes
Mar 25, 2013
3504bda
More edits + example
Mar 29, 2013
bba95a4
More edits (testing)
May 16, 2013
36ef014
Oh right, dependencies...
May 16, 2013
ecd6aa8
Edits to dependencies
Aug 19, 2013
65f64ff
Made UI bigger for extra tool
Sep 23, 2013
bbd66e1
Upgraded matplotlib
Sep 23, 2013
f13ae79
Trying to add track filters
Sep 23, 2013
5d37ff1
Removed thumbs
Sep 30, 2013
8068ff2
Added sample props file
Sep 30, 2013
ccd8061
Updated matplotlib
Sep 30, 2013
5764165
Example data files
Oct 8, 2013
2789133
Added node tagging within N nodes of branchpoints
Jan 24, 2014
5b281ef
Re-organized toy data
Apr 8, 2014
0b476cb
Added LAP diagnostics
Apr 11, 2014
f6daf2c
Delete Example.cpproj
Apr 17, 2014
6b2269c
Delete Example.cppipe
Apr 17, 2014
c27f80f
More LAP diagnostic revision
Apr 17, 2014
7a7171a
Added two-point montage selection
Apr 22, 2014
76d57ff
Trying to take advantage of on_traits_change
Apr 29, 2014
35e4303
Bugfix, defensive programming
May 8, 2014
9f400fd
Removed, added examples
May 8, 2014
584c996
Edited .gitignore
May 8, 2014
c687b21
Removed, added props file
May 8, 2014
8b325fb
Got scalar_data update working again
May 8, 2014
bca43f6
Picker dettachment solved!
May 14, 2014
3294559
Optimized QC meas execution, added context menu stuff
May 21, 2014
757603b
Lots of edits to context menu re: trajectories
May 27, 2014
71382f6
Fixed trajectory selection bug
May 29, 2014
bdabd3a
Added decision-making for selecting N frames
Jun 2, 2014
06b862c
Added user-specification of N node dist cutoff
Jun 2, 2014
dc9ea3c
Fixed N-frame selection problem
Jun 13, 2014
bba359d
Edits to selection display (thanks Lee!)
Jun 26, 2014
fab7ad2
Added graph pruning button + visualization
Jul 2, 2014
a97babb
Beginning relationship saving (not finished yet)
Jul 2, 2014
81a3757
Finished rel'nship saving and selection
Jul 3, 2014
b39adef
Refined reln table stuff, plus added cycle QC
Jul 8, 2014
db368ad
Omit interior nodes from cycle viz
Jul 8, 2014
29415a8
Revised plot update on track save
Jul 10, 2014
ae6d4eb
Major restructuring of UI calls
Jul 11, 2014
5c4c1a1
Show/hide derived meas controls+colormap fix
Jul 14, 2014
f55488a
Added more diagnostic graphs
Jul 15, 2014
e6f3f8f
Save user-defined graphs in db node,edge tables
Jul 17, 2014
437a1fe
Added menu bar, edge attributes
Jul 17, 2014
d3726f9
More edge attributes
Jul 24, 2014
d91202f
Added measurement heatmap
Aug 5, 2014
08d76a3
Moved some examples around
Aug 7, 2014
dda339c
Changed filtering scheme
Aug 15, 2014
df20a6d
Removed data files
Aug 25, 2014
fb36e47
Removed example files
Aug 25, 2014
930f316
Updated .gitignore
Aug 25, 2014
66969ac
Merge remote-tracking branch 'tracer/master' into cellprofiler-tracer
Sep 1, 2014
ee6aede
Resolving a few missed conflicts
Sep 2, 2014
54eb61f
Finalized tool name
Sep 2, 2014
b08f2f5
Update closing code
Sep 2, 2014
70444bf
Re-did info table with hashing to detect changes
Sep 5, 2014
736e8fc
issue #55 - added attach/detach pair for TileLoader thread
Sep 4, 2014
6429149
issue #54 fixed indexing bug in fastgentleboosting
Sep 4, 2014
363bbb2
Save edits on singletons only
Sep 8, 2014
f70354f
Windows setup for tracer
Sep 23, 2014
8d540d3
Naming edits, disabled filtering for now
Oct 6, 2014
62f0be8
Added warnings for TLM data sets
Oct 7, 2014
fec4915
Added help linking to Tracer webpage
Oct 7, 2014
4bd11e9
Disabled a menu item for now.
Oct 7, 2014
d818385
Continuation of 8d540d3
Oct 9, 2014
5bd202b
Bugfix+msgbox edit
Oct 10, 2014
5022a0b
Added indexing to edge,node tables
Oct 10, 2014
01dd8bc
Added title to context menu
Oct 10, 2014
ed7ae2f
Forgot to check if index exists beforehand...
Oct 10, 2014
6db26d5
Remove endpoint highlighting until I figure it out
Nov 10, 2014
4c2d5a6
Update for Tracer build
Nov 14, 2014
1ea3c72
Handle case w/ 1 trajectory
Jan 6, 2015
5bb5f01
Fixed import refs
Jan 6, 2015
c686f3c
Typo in node selection
Apr 13, 2015
e793a26
Some small revisions
May 18, 2015
f4b2389
Avoid obvious error when XValidate breaks
Aug 5, 2015
bd53fec
Corrected bug, changed annotation
Aug 8, 2015
a4f1f37
Strip iCCP profile to fix libpng warning: iCCP: known incorrect sRGB …
radioxoma Aug 28, 2015
70ecdfb
Fix wx.NullColour rename issue
radioxoma Jun 30, 2015
7e0b68f
Strip iCCP profile from tracer.png
Oct 8, 2015
eb4fccc
Maybe we are not allowed to write the log to the install dir
Oct 8, 2015
de051d2
Fix absolute pathnames
Oct 8, 2015
1ce63f6
Various fixes for WX 3.0
Oct 8, 2015
b37cfbf
Added DLL excludes + some more explicit includes
Oct 8, 2015
5b5fb98
Added DLL excludes + some more explicit includes
Oct 8, 2015
dcb433d
Merge pull request #71 from radioxoma/wxfix
Aug 31, 2015
db4174f
Cherry-pick of 3a8646d: Update for wxWidgets 3.x
Aug 31, 2015
d055df4
wx3: GetStringSelection --> GetValue
Oct 17, 2015
a20922b
Typo
Oct 17, 2015
23c2e3d
Revised Tracer icons
Oct 17, 2015
4101bf6
Revised icons
Oct 19, 2015
0ec154b
Resolving conflicts
Jan 22, 2016
b058163
Merge pull request #138 from CellProfiler/cellprofiler-tracer-leek
Jan 22, 2016
92842ad
Needed to explicitly set traits to use wx
Apr 11, 2016
ddffe58
Merge branch 'master' into feature/tracer-revival
stulacy Mar 21, 2024
d49fafd
Housekeeping - removing commented lines
stulacy Mar 21, 2024
7f91519
Finished cleaning up merge
stulacy Apr 11, 2024
bf6f449
Housekeeping
stulacy Apr 11, 2024
55046ea
Polishing merge
stulacy Apr 12, 2024
917ccfb
Converting print statements to functions
stulacy Apr 12, 2024
53d1186
Fixed tracer imports
stulacy Apr 12, 2024
8c16af8
Updated tracer with Python 3 style Singletons
stulacy Apr 12, 2024
b1ee6f9
Fixex ImageGallery import
stulacy Apr 12, 2024
b5b8cec
Updating wx
stulacy Apr 12, 2024
077fc00
Fixed Python2 reference to long
stulacy Apr 12, 2024
7e34e3a
Updated wx.AddSpacer calls
stulacy Apr 12, 2024
b7c4e01
Hashing fix
stulacy Apr 12, 2024
34faa6d
Replaced time.clock() with time.process_time()
stulacy Apr 12, 2024
6fb2733
Fix update to networkx api
stulacy Apr 12, 2024
439ea51
Updated map as it now returns a generator
stulacy Apr 12, 2024
a752019
Fixed np.float deprecation
stulacy Aug 15, 2024
cd849ec
Fixed dimensionality reduction
stulacy Aug 15, 2024
27b492f
Fixed numpy.delete behaviour change
stulacy Aug 15, 2024
26f27de
networkx v1 -> v3 migration changes (part1)
stulacy Aug 15, 2024
676f03b
networkx v1 -> v3 changes (part 2)
stulacy Aug 15, 2024
eef6c8d
networkx v1 -> v3 migration changes (part 3)
stulacy Aug 15, 2024
60f94bd
Added debugging comments
stulacy Aug 15, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
*\#
*~
*.egg
*.egg-info/
.eggs/
build
dist
Expand Down
42 changes: 42 additions & 0 deletions CellProfiler-Analyst.iss
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
; NOTE: The value of AppId uniquely identifies this application.
; Do not use the same AppId value in installers for other applications.
; (To generate a new GUID, click Tools | Generate GUID inside the IDE.)
AppId={{7DC05C02-41F1-4241-BD72-449D12360372}
AppName=CellProfiler-Analyst
AppVersion=Tracer
;AppVerName=CellProfiler-Analyst Tracer
AppPublisher=Broad Institute
AppPublisherURL=http://cellprofiler.org
AppSupportURL=http://cellprofiler.org
AppUpdatesURL=http://cellprofiler.org
DefaultDirName={pf64}\CellProfiler-Analyst
DefaultGroupName=CellProfiler-Analyst
LicenseFile=.\LICENSE
OutputDir=.\output
OutputBaseFilename=CellProfiler-Analyst
SetupIconFile=.\cpa\icons\cpa.ico
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: ".\dist\CellProfiler-Analyst.exe"; DestDir: "{app}"; Flags: ignoreversion
Source: ".\dist\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\CellProfiler-Analyst"; Filename: "{app}\CellProfiler-Analyst.exe"
Name: "{commondesktop}\CellProfiler-Analyst"; Filename: "{app}\CellProfiler-Analyst.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\CellProfiler-Analyst.exe"; Description: "{cm:LaunchProgram,CellProfiler-Analyst}"; Flags: nowait postinstall skipifsilent

12 changes: 9 additions & 3 deletions CellProfiler-Analyst.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
# =============================================================================



import sys
import os
import os.path
Expand All @@ -21,6 +20,7 @@
from cpa.plateviewer import PlateViewer
from cpa.imageviewer import ImageViewer
from cpa.imagegallery import ImageGallery
from cpa.tracer import Tracer
from cpa.boxplot import BoxPlot
from cpa.scatter import Scatter
from cpa.histogram import Histogram
Expand Down Expand Up @@ -55,7 +55,6 @@ def emit(self, record):
else:
p.LoadFile(sys.argv[1])


from cpa.cpatool import CPATool
import inspect

Expand All @@ -74,6 +73,7 @@ def emit(self, record):
ID_BOXPLOT = wx.NewIdRef()
ID_DIMENSREDUX = wx.NewIdRef()
ID_NORMALIZE = wx.NewIdRef()
ID_TRACER = wx.NewIdRef()

def get_cpatool_subclasses():
'''returns a list of CPATool subclasses.
Expand Down Expand Up @@ -115,6 +115,7 @@ def __init__(self, properties, parent, id=-1, **kwargs):
tb.AddTool(ID_BOXPLOT.GetId(), 'Box Plot', get_icon("boxplot").ConvertToBitmap(), shortHelp='Box Plot')
tb.AddTool(ID_DIMENSREDUX.GetId(), 'Reduction', get_icon("dimensionality").ConvertToBitmap(), shortHelp='Dimensionality Reduction')
tb.AddTool(ID_TABLE_VIEWER.GetId(), 'Table Viewer', get_icon("data_grid").ConvertToBitmap(), shortHelp='Table Viewer')
tb.AddTool(ID_TRACER.GetId(), 'Tracer', get_icon("tracer").ConvertToBitmap(), shortHelp='Tracer')
# tb.AddLabelTool(ID_NORMALIZE, 'Normalize', get_icon("normalize").ConvertToBitmap(), shortHelp='Normalization Tool', longHelp='Launch Feature Normalization Tool')
tb.Realize()

Expand Down Expand Up @@ -147,6 +148,7 @@ def __init__(self, properties, parent, id=-1, **kwargs):
dimensionMenuItem = toolsMenu.Append(ID_DIMENSREDUX, 'Dimensionality Reduction', helpString='Launches the Dimensionality Reduction tool.')
dataTableMenuItem = toolsMenu.Append(ID_TABLE_VIEWER, 'Table Viewer\tCtrl+Shift+T', helpString='Launches the Table Viewer tool.')
normalizeMenuItem = toolsMenu.Append(ID_NORMALIZE, 'Normalization Tool\tCtrl+Shift+T', helpString='Launches a tool for generating normalized values for measurement columns in your tables.')
tlmMenuItem = toolsMenu.Append(ID_TRACER, 'Tracer\tCtrl+Shift+L', helpString='Launches the Tracer time-lapse viewer tool.')
self.GetMenuBar().Append(toolsMenu, 'Tools')

logMenu = wx.Menu()
Expand Down Expand Up @@ -212,6 +214,7 @@ def update(x):
self.Bind(wx.EVT_TOOL, self.launch_histogram_plot, id=ID_HISTOGRAM)
self.Bind(wx.EVT_TOOL, self.launch_density_plot, id=ID_DENSITY)
self.Bind(wx.EVT_TOOL, self.launch_box_plot, id=ID_BOXPLOT)
self.Bind(wx.EVT_TOOL, self.launch_tracer, id=ID_TRACER)
self.Bind(wx.EVT_TOOL, self.launch_dimens_redux, id=ID_DIMENSREDUX)
self.Bind(wx.EVT_TOOL, self.launch_normalization_tool, id=ID_NORMALIZE)
self.Bind(wx.EVT_MENU, self.on_close, self.exitMenuItem)
Expand Down Expand Up @@ -268,6 +271,10 @@ def launch_image_gallery(self, evt=None):
colViewer = ImageGallery(parent=self, properties=self.properties)
colViewer.Show(True)

def launch_tracer(self, evt=None):
tracer = Tracer(parent=self)
tracer.Show(True)

def launch_box_plot(self, evt=None):
if self.confirm_properties():
boxplot = BoxPlot(parent=self)
Expand Down Expand Up @@ -429,7 +436,6 @@ def on_idle(self, evt=None):
self.console.AppendText(self.log_text)
self.log_text = ''


class CPAnalyst(wx.App):
'''The CPAnalyst application.
This launches the main UI, and keeps track of the session.
Expand Down
5 changes: 0 additions & 5 deletions cpa/boxplot.py
Original file line number Diff line number Diff line change
Expand Up @@ -208,8 +208,6 @@ def save_settings(self):
'filter' : self.filter_choice.Value,
'x-lim' : self.figpanel.subplot.get_xlim(),
'y-lim' : self.figpanel.subplot.get_ylim(),
## 'grouping': self.group_choice.Value,
## 'version': '1',
}

def load_settings(self, settings):
Expand All @@ -218,9 +216,6 @@ def load_settings(self, settings):
settings - a dictionary mapping setting names to values encoded as
strings.
'''
## if 'version' not in settings:
## settings['grouping'] = NO_GROUP
## settings['version'] = '1'
if 'table' in settings:
self.table_choice.SetStringSelection(settings['table'])
self.update_column_fields()
Expand Down
6 changes: 5 additions & 1 deletion cpa/columnfilter.py
Original file line number Diff line number Diff line change
Expand Up @@ -23,9 +23,13 @@ def __init__(self, parent, tables, allow_delete=True, expression=None, **kwargs)
self.tables = tables
self.types = {}
self.types[p.image_table] = db.GetColumnTypes(p.image_table)
self.types[p.object_table] = db.GetColumnTypes(p.object_table)
self.tableChoice = ComboBox(self, choices=self.tables, size=(150,-1), style=wx.CB_READONLY)
self.tableChoice.Select(0)
self.colChoice = ComboBox(self, choices=db.GetColumnNames(p.image_table), size=(150,-1), style=wx.CB_READONLY)
choices = []
for table in tables:
choices += db.GetColumnNames(table)
self.colChoice = ComboBox(self, choices=choices, size=(150,-1), style=wx.CB_READONLY)
self.colChoice.Select(0)
self.comparatorChoice = ComboBox(self, size=(80,-1), style=wx.CB_READONLY)
self.update_comparator_choice()
Expand Down
2 changes: 1 addition & 1 deletion cpa/dbconnect.py
Original file line number Diff line number Diff line change
Expand Up @@ -1290,7 +1290,7 @@ def GetCellDataForRedux(self):
if not all([type(x) in valid_types for x in data[0]]):
raise ValueError("Invalid column types were found in the data. "
"Only numerical columns can be present in the object table")
return np.array(data, dtype=np.float)
return np.array(data, dtype='float')

def GetCellData(self, obKey):
'''
Expand Down
2 changes: 1 addition & 1 deletion cpa/dimensionreduction.py
Original file line number Diff line number Diff line change
Expand Up @@ -810,7 +810,7 @@ def update_figpanel(self, evt=None):
start = time()

dlg.Pulse('Generating model and plot')
selected_method = self.method_choice.GetStringSelection()
selected_method = self.method_choice.GetValue()
selected_plot = self.plot_choice.GetStringSelection()

if self.figpanel.calculated != selected_method:
Expand Down
1 change: 1 addition & 0 deletions cpa/fastgentleboosting.py
Original file line number Diff line number Diff line change
Expand Up @@ -391,6 +391,7 @@ def XValidate(self, colnames, num_learners, label_matrix, values, folds, group_l
holdout_results = self.Train(colnames, num_learners, holdin_labels, holdin_values, test_values=holdout_values)
if holdout_results is None:
return None

# pad the end of the holdout set with the last element
if len(holdout_results) < num_learners:
holdout_results += [holdout_results[-1]] * (num_learners - len(holdout_results))
Expand Down
Loading