GithubHelp home page GithubHelp logo

dicompyler's People

Contributors

bastula avatar

Watchers

 avatar

dicompyler's Issues

Consider showing Differential DVHs in addition to Cumulative DVHs

Currently only cDVHs are shown. DICOM RT DVH has a the capability to store 
dDVHs so 
dicompyler should be able to support them as well.

Additionally, it should be possible to switch between cDVH and dDVH 
representation 
regardless of the original DVH data.

Original issue reported on code.google.com by bastula on 1 Nov 2009 at 4:02

Discrepancy between dose grid and structure set/CT

What steps will reproduce the problem?
1.Using Eclipse 8.2 TPS
2.In TPS, contour an isodose level and a target on the CT
3.Import into dicompyler

What is the expected output? What do you see instead?
Expected isodose level and contours to be aligned.  CT is aligned with 
structure sets, but small discrepancy (~2mm to patient's right and ~2mm to 
patient's anterior side) shifted.

What version of the product are you using? On what operating system?
dicompyler-0.4a2.tgz 
windows 7 64-bit

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 20 Jun 2011 at 2:26

Attachments:

Missing "SliceLocation"

Some exported data sets (Pinnacle and Brainlab) did not include the 
SliceLocation Tag, leading to program crash on input. Here is my workaround:

In dicomgui, near line 226 (DirectorySearchThread):

                            image = {}
                            image['id'] = dp.GetSOPInstanceUID()
                            image['filename'] = files[n]

                            #BPT-March 2011
                            #SliceLocation is not always present, so have a workaround ready
                            if "SliceLocation" in dp.ds:
                                image['slicelocation'] = dp.ds.SliceLocation
                            elif "ImagePositionPatient" in dp.ds:
                                #Take a slicelocation from ImagePosition z value
                                image['slicelocation']=dp.ds.ImagePositionPatient[2]
                            else:
                                #put something in there anyway
                                #FIX THIS WITH A SEQUENCE NUMBER
                                image['slicelocation']=1

                            image['imagenumber'] = dp.ds.InstanceNumber


And then later, in GetPatientData:

        # Sort the images based on Slice Location
        if self.patient.has_key('images'):
            #Check to see if image has SliceLocation defined. If not, use z axis position
            #BPT-March 2011
            #SliceLocation is not always present, so have a workaround ready
            snumber=1
            for image in self.patient['images']:
                if "SliceLocation" in image:
                        image.SliceLocation= image.SliceLocation #do nothing
                elif "ImagePositionPatient" in image:
                    #Take a slicelocation from ImagePosition z value
                    image.SliceLocation=image.ImagePositionPatient[2]
                else:
                    #put something in there anyway
                    #FIX THIS WITH A SEQUENCE NUMBER
                    image.SliceLocation=snumber
                    snumber=snumber+1
            #
            #

Original issue reported on code.google.com by [email protected] on 3 Mar 2011 at 9:15

Cannot view Pinnacle3 files properly

What steps will reproduce the problem?
1. installed dicompyler using the windows installer on a Windows 7 64 bit system
2. Open Patient ...., find the required patient, select, and enter the 
prescription dose (7000cGy)
3. load is successful

What is the expected output? What do you see instead?

expect to see Structures, Isodoses and a CT with overlays
I see Structures list, Isodoses list and a three tab view called '2D view' (but 
.... NO CT IMAGE); 'DVH' (has the axes but no lines for selected structures) 
and 'DICOM Tree' (lists the file headers).

What version of the product are you using? On what operating system?

dicompyler version 0.3, on Windows 7 64-bit

Please provide any additional information below.

patient planned on Pinnacle V9.0

Original issue reported on code.google.com by [email protected] on 10 Nov 2010 at 4:29

Credits button missing in about dialog

As of the latest revision, 21 Feb. 2010, the new Credits button seems to
have disappeared from the About dialog (at least in the Gtk version). I did
a clean clone from the code repository and it was still missing.

The button is present in my clone, but I didn't see any differences in what
seemed like the relevant code in main.py (OnAbout()) between the two.

No idea on this one.

Original issue reported on code.google.com by [email protected] on 25 Feb 2010 at 8:32

Support RT Dose data that is separated by fraction

What steps will reproduce the problem?
1. load a dicom file (with structures in my case)
2. hit export->as anonymized DICOM
3.

What is the expected output? What do you see instead?
- Expected the export dialog would appear.

What version of the product are you using? On what operating system?
- hg tip 113:730e082a798b
- Running on current Debian testing amd64 01.May.2011.
- wxwidgets2.8 (2.8.10.1-3)
- python-wxgtk2.8 2.8.10.1-3+b2

Please provide any additional information below.
Traceback (most recent call last):
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 14614, in <lambda>
    lambda event: event.callable(*event.args, **event.kw) )
  File "/home/bassler/Projects/dicompyler/dicomgui.py", line 510, in AddPatientDataTree
    self.EnableItemSelection(patient, dose, filearray)
  File "/home/bassler/Projects/dicompyler/dicomgui.py", line 564, in EnableItemSelection
    for planid, plan in patient['plans'].iteritems():
KeyError: 'plans'
Traceback (most recent call last):
  File "./baseplugins/anonymize.py", line 54, in pluginMenu
    dlgAnonymize.Init()
  File "./baseplugins/anonymize.py", line 238, in Init
    pub.sendMessage('preferences.requested.value', 'general.dicom.import_location')
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/lib/pubsub.py", line 811, in sendMessage
    self.__topicTree.sendMessage(aTopic, message, onTopicNeverCreated)
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/lib/pubsub.py", line 498, in sendMessage
    deliveryCount += node.sendMessage(message)
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/lib/pubsub.py", line 336, in sendMessage
    listener(message)
  File "/home/bassler/Projects/dicompyler/preferences.py", line 98, in GetPreferenceValue
    pub.sendMessage(msg.data, v[query[0]][query[1]][query[2]])
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/lib/pubsub.py", line 811, in sendMessage
    self.__topicTree.sendMessage(aTopic, message, onTopicNeverCreated)
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/lib/pubsub.py", line 498, in sendMessage
    deliveryCount += node.sendMessage(message)
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/lib/pubsub.py", line 336, in sendMessage
    listener(message)
  File "/home/bassler/Projects/dicompyler/dicomgui.py", line 122, in OnImportPrefsChange
    self.txtDicomImport.SetValue(self.path)
  File "/usr/lib/python2.6/dist-packages/wx-2.8-gtk2-unicode/wx/_core.py", line 14564, in __getattr__
    raise PyDeadObjectError(self.attrStr % self._name)
wx._core.PyDeadObjectError: The C++ part of the DicomImporterDialog object has 
been deleted, attribute access no longer allowed.

Original issue reported on code.google.com by niels.bassler on 1 May 2011 at 8:12

Independent volume calculation of structures

Currently dicompyler will read the volume data directly from the calculated DVH 
(as of r7db70b8ed0 ).

Prior to this, the volume was calculated in dvhdata.py. However, this volume 
was inaccurate since only a single contour for the structure on each slice was 
used.

After r7db70b8ed0 though, the structure data now contains all contours for each 
slice. Therefore the volume calculation needs to be updated to reflect the more 
accurate contour data.

Original issue reported on code.google.com by bastula on 18 Jun 2010 at 3:10

Add ability to read files that don't end in .dcm

What steps will reproduce the problem?
1. Read a directory full of DICOM files without the .dcm extension

What is the expected output? What do you see instead?
UI doesn't read the files.

According to a thread on the pydicom discussion group ( 
http://groups.google.com/group/pydicom/browse_thread/thread/acb86a9facd4afa ), 
this can be 
resolved.

Original issue reported on code.google.com by bastula on 24 Nov 2009 at 5:02

Files with .DCM extension not read on case sensitive OS's such as Linux (.dcm OK)

What steps will reproduce the problem?
1. On Linux, set extension to .DCM on Dicom-RT file
2. Select directory with patient selection dialog
3. Dicom-RT is not seen.

What is the expected output? What do you see instead?
File should be read as it is a valid Dicom(-RT) file.

What version of the product are you using? On what operating system?
The latest code as of 18 Nov. 2009 on Ubuntu 9.04.

The fix is simple. Python's file name matching function defaults to
case-sensitivity on case-sensitive operating systems. One fix is to
explicitly lowercase the file extension to see if it matches.

Here is the output of diff for my patch and the original dicomgui.py file:

169c169
<                 if (os.path.isfile(dcmfile) and
fnmatch.fnmatch(dcmfile.lower(), '*.dcm')):

---
>                 if (os.path.isfile(dcmfile) and fnmatch.fnmatch(dcmfile,
'*.dcm')):


Original issue reported on code.google.com by [email protected] on 18 Nov 2009 at 9:41

Attachments:

Missing "model.py" in build of 2/17/2011

What steps will reproduce the problem?
1. Using build from 2/17/2011, ./main.py requires deleted model.py
2.
3.

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?
Build 2/17/2011 on Ubuntu 10.04

Please provide any additional information below.
Removing reference in plugin.py and anonymize.py allows ./main.py to compile. 
Still checking functionality of build.

Original issue reported on code.google.com by [email protected] on 22 Feb 2011 at 1:18

Sliding DVH constraint while zoomed in causes zoom-out.

What steps will reproduce the problem?
1. Open a DVH and zoom in on a region.
2. Slide the dose constraint.

What is the expected output? What do you see instead?
Slider should move along zoomed in plot curve. Instead the plot zooms out
to original zoom level and slides.

What version of the product are you using? On what operating system?
24 Nov.2009 (Revision b8ff08c1a7). Ubuntu 8.04, wxPython 2.8.7.1, wxmpl
1.2.9, matplotlib 0.91.2

This is probably a matplotlib or wxmpl issue.

Original issue reported on code.google.com by [email protected] on 24 Nov 2009 at 11:18

Handling external contours in 2D display

2D structure/contour view is looking good. 

I am wondering what the best way to deal with external/skin contours. I suspect 
there is no standard name for this. Maybe the user should be able to designate 
the structure as external or simply "filled".

The attached file shows an external contour of a head. The "expected" behavior 
is that the contour only displays on the skin itself and is not filled in. That 
seems to be the standard behavior for TPS's.

Using the latest revisions as of 19 June 2010.

Original issue reported on code.google.com by [email protected] on 20 Jun 2010 at 6:22

Attachments:

RTDOSE file with no image crashes

Some exported Brainlab RTDOSE files contain only DVH info, not a dose "image". 
This will cause DicomParser.GetImageData to crash.

Workaround:

    def GetImageData(self, window = None, level = None):
        """Return the image data from a DICOM file."""
        data = {}
        #BPT March 2011. Not every ds has an image
        if "PixelData" in self.ds:
            data['position'] = self.ds.ImagePositionPatient
            data['orientation'] = self.ds.ImageOrientationPatient
            data['pixelspacing'] = self.ds.PixelSpacing
            data['rows'] = self.ds.Rows
            data['columns'] = self.ds.Columns
            if 'PatientPosition' in self.ds:
                data['patientposition'] = self.ds.PatientPosition

This allows the data to load, but it does not compute the DVH. I'm not sure how 
prevalent this case will be, so I have no suggested further action at this time.

Probably most of these types of issues with "imperfect" data sets will vanish 
when an exception handler is implemented.

Original issue reported on code.google.com by [email protected] on 4 Mar 2011 at 8:10

Upgrade to pydicom 0.9.5

Currently running dicompyler from source with pydicom 0.9.5 will break. This is 
because pydicom now raises a InvalidDicomError if files are not valid DICOM - 
see 
http://code.google.com/p/pydicom/source/detail?r=fc790f01f517f060baa4f92b80311ab
0e9536c8e
Therefore we can remove our own detection in dicomparser.py and use the 
detection from pydicom.

Additionally, pydicom 0.9.5 fixes the recursion error on private data elements 
which occurs with some vendor data, crashing the DICOM tree view plugin.

Original issue reported on code.google.com by bastula on 12 Nov 2010 at 4:15

Implement faster display of structures and isodose data in the 2D View

Currently the structure display in the 2D View is rather slow. This can be 
improved by caching of the structure data.

One way to improve this would be to cache the data after the user clicks on the 
structure checkbox but before each structure is displayed. The existing 
progress bar function in guiutil.py can be reused for this.

Another way could be to silently load the data in another thread without the 
progress bar function.

Original issue reported on code.google.com by bastula on 18 Jun 2010 at 2:37

Import Rx Dose values from RT Plans that have Volume-type Dose References

What steps will reproduce the problem?

1. Import a RT Plan from a system such as TomoTherapy
2. Manually enter a Rx Dose in the import dialog

What is the expected output? What do you see instead?

This process works fine, but the user has to manually enter the Rx Dose. The Rx 
Dose is listed in organ constraint lists as the Target Prescription Dose in 
some RT Plans that have Dose References of 'VOLUME' and can be read instead of 
being manually entered.

Original issue reported on code.google.com by bastula on 9 Nov 2010 at 2:43

Support matplotlib 1.0.0 and above

In the 2dview, the isodose contour generation fails when using matplotlib 1.0.0 
or above due to a change in the function arguments.

Traceback from Steve Terry:

Traceback (most recent call last):
 File "C:\Documents and Settings\flounder\Desktop\dicompyler
\baseplugins\2dview
.py", line 426, in OnPaint
   self.DrawIsodose(isodose, gc, isodosegen)
 File "C:\Documents and Settings\flounder\Desktop\dicompyler
\baseplugins\2dview
.py", line 279, in DrawIsodose
   contours = isodosegen.trace(level, points = 0)
TypeError: 'points' is an invalid keyword argument for this function

The change in matplotlib source is documented here: 
http://matplotlib.svn.sourceforge.net/viewvc/matplotlib/trunk/matplotlib/src/cnt
r.c?r1=7341&r2=7342

The workaround is to make a conditional to support matplotlib versions 0.99 and 
below and versions 1.0.0 and above.

Original issue reported on code.google.com by bastula on 6 Apr 2011 at 8:06

Wrong display of image size on non-square images

What steps will reproduce the problem?
1. Load a dataset where the image series (CT images) are not square (number of 
rows not equal to number of columns).
2. In the image view (2d View) the following text is displayed at the bottom 
left: Image Size: 171x171 px
3. This issue is with the text only. The image itself seems to be displayed 
correctly.

What is the expected output? What do you see instead?
In reality, the dimensions of the image is 512 columns and 171 rows.

What version of the product are you using? On what operating system?
dicompyler version 0.4a2

Regards,
Chris

Original issue reported on code.google.com by [email protected] on 22 Jul 2011 at 12:30

Implement add/remove/modify support for specific isodose levels

Currently, the isodose levels are fixed. An interface needs to be implemented 
so that users can modify the isodose levels that are displayed.

Ideally this code should be generic enough so that it can go into 
ColorCheckListBox in guiutil.py.

Original issue reported on code.google.com by bastula on 24 Nov 2010 at 8:14

Cannot Import Pinnacle DICOM files

What steps will reproduce the problem?
1. point to directory
2. read directory
3. no available files/patients

What is the expected output? What do you see instead?


What version of the product are you using? On what operating system?
0.3 on Win XP SP3

Please provide any additional information below.


Original issue reported on code.google.com by [email protected] on 25 Oct 2010 at 5:47

Update the Anonymization plugin so that it writes out the file meta info for all files

What steps will reproduce the problem?
1. Try to anonymize a file that does not have a file meta info with:
* (0002, 0002) Media Storage SOP Class UID
* (0002, 0003) Media Storage SOP Instance UID

What is the expected output? What do you see instead?
It should anonymize normally, however the plugin will crash.

There was a change in pydicom 0.9.4 that moved the file meta info to a separate 
object (ds.file_meta). This object needs to be updated with the correct Media 
Storage SOP Class and Instance tags before writing out the file, as some DICOM 
files do not contain them and will fail upon writing out to disk.


Original issue reported on code.google.com by bastula on 14 Jul 2010 at 3:59

Redirect log output to a user writable folder on Windows

On Windows Vista/7, writing to the installation folder is prohibited. Currently 
the executable version generates a log file wherever the executable is located.

Since the folder is non-writable, any errors cannot be logged. This can be 
averted by redirecting the log file to the user's dicompyler data folder.

More information can be found here: http://www.py2exe.org/index.cgi/StderrLog

Original issue reported on code.google.com by bastula on 12 Nov 2010 at 5:48

DVHs should allow more than one structure to be plotted simultaneously

Currently, the DVH view only shows one structure at a time. Ideally, when 
reviewing a plan, 
it is the usual custom to view multiple structures simultaneously. This would 
allow the DVH 
to be scaled to the scale of the largest structure displayed.

This requires two fixes:
1. Add a checklistbox for th structures so more than one can be selected (along 
with color 
coding to determine which color belongs to the respective structure).
2. The constraint viewer / cursor should still only be tied to the highlighted 
structure, not the 
checked ones.

Original issue reported on code.google.com by bastula on 1 Nov 2009 at 4:16

Database location should be set to the user's data directory

What steps will reproduce the problem?
1. Run dicompyler for the first time.

What is the expected output? What do you see instead?

Currently dicompyler places dicompyler.db in the same folder that the
app/source is located. It should place the database file in the user's data
folder. This can be adjusted by using wx.StandardPaths to determine the
correct location. Additionally, a check should be made whether the parent
folder exists before writing to disk.

On uninstall of the application, the user should be prompted whether to
remove the data folder or not.

Original issue reported on code.google.com by bastula on 31 Dec 2009 at 4:09

Fails to load phantom generated in MasterPlan

What steps will reproduce the problem?
1. Created a test phantom in the MasterPlan treatment planning system, having 5 
CT slices and a structure set with a few simple contours.
2. Open dicompyler, click open patient button, browse to the folder containing 
my 5 CT images and 1 structure set.

What is the expected output? What do you see instead?
Expected to see the phantom in the patient list, be able to select it and load 
it in the viewer.
The phantom is listed in the patient list, however it says "Progress: Searching 
for patients.... 0% and the select button is not active so Im not able to do 
anything.

What version of the product are you using? On what operating system?
dicompyler-0.3.exe running on Win XP SP3.

Please provide any additional information below.
I really like the idea of dicompyler, and would like to try it out, but it may 
seem that it is not very robust yet in its handling of dicom files.

If you are interested in looking into this, I can send you the dicom files I 
tested with.

From the error log it may seem like it complains about "Slice Location" 
(0020,1041) missing. In such a case, would it be possible for the program to 
use "Image Position (Patient)" (0020,0032) instead?

Regards,
Chris


Attached: Error log.

Exception in thread Thread-1:
Traceback (most recent call last):
  File "threading.pyo", line 532, in __bootstrap_inner
  File "threading.pyo", line 484, in run
  File "dicomgui.pyo", line 195, in DirectorySearchThread
UnicodeEncodeError: 'ascii' codec can't encode character u'\xf8' in position 
47: ordinal not in range(128)

Exception in thread Thread-3:
Traceback (most recent call last):
  File "threading.pyo", line 532, in __bootstrap_inner
  File "threading.pyo", line 484, in run
  File "dicomgui.pyo", line 231, in DirectorySearchThread
  File "dicom\dataset.pyo", line 238, in __getattr__
AttributeError: Dataset does not have attribute 'SliceLocation'.

Original issue reported on code.google.com by [email protected] on 12 May 2011 at 11:14

  • Merged into: #34

Open Files

What steps will reproduce the problem?
1.Open .dcm files

What is the expected output? What do you see instead?
I need to see some images.But the program doesn't open them.

What version of the product are you using? On what operating system?
The version of the program is 0.3, the program is running on Windows 7 32bits

Please provide any additional information below.
I'd like to see some images,but the program doesn't let me open them.
How can I solve this issue?

Original issue reported on code.google.com by [email protected] on 30 Nov 2010 at 9:22

Isodoses in the 2D View don't display properly if the number of frames is not equal to the number of images

What steps will reproduce the problem?
1. Read a DICOM RT Dose file that has a different number of frames than image 
slices

What is the expected output? What do you see instead?
Isodoses should display properly, but instead they are either not shown or 
shown in the wrong location.

The fix is to use the tag Image Position (Patient) (0020,0032) tag in 
combination with the Grid Frame Offset Vector (3004,000C) tag to determine the 
start location and subsequent locations of the multi-frame dose matrix.


Original issue reported on code.google.com by bastula on 9 Oct 2010 at 7:06

Display DICOM coordinates / CT values / Dose values of the mouse in the 2D View

It would be useful if in the 2D View that when moving the mouse, the DICOM 
coordinates / CT values / Dose values could be displayed on screen.

For the current mouse position, the function GetPatientToPixelLUT in 
dicomparser can be used, which returns mm coordinate arrays which correspond to 
the image pixels.

For the current CT value and dose value, this information can be queried via 
the image's pixel_array.

Original issue reported on code.google.com by bastula on 30 Mar 2011 at 3:14

Can't make patient anonymous without loading first

What steps will reproduce the problem?
1.if there is an error in file loading, the anonymous option is not available, 
which makes handing the file off for further testing of solutions a problem 
with respect to Privacy Legislation.

What is the expected output? What do you see instead?
Can the Anonymous option be made to work on a file without loading all the 
image data first?

What version of the product are you using? On what operating system?
not relevant as this is about design not code

Please provide any additional information below.

Original issue reported on code.google.com by [email protected] on 23 Feb 2011 at 8:44

RT Structure Set does not show for prone patients in the 2D View

What steps will reproduce the problem?
1. Open a patient that is HFP (head first prone)
2. Switch to the 2D View
3. Enable some structures

What is the expected output? What do you see instead?

Structures should be displayed on the 2D View but are missing.

This can be addressed by looking into the coordinates of the structure before 
it is drawn. The LUT is not the problem as isodoses are being displayed 
properly.


Original issue reported on code.google.com by bastula on 20 Jun 2010 at 6:53

MR images not recognized as an image series

What steps will reproduce the problem?
1. Open a folder containing a set of MR dicom images.
2. dicompyler will not recognize this as an image series.
3. You will not be able to click 'Select' to view these images in the program.

What is the expected output? What do you see instead?
That it identifies it as an image series, e.g. (MR, 34 images)
That you can select it and view the images as with a CT image series.

What version of the product are you using? On what operating system?
dicompyler version 0.4a2, Windows XP

Please provide any additional information below.
It would be nice if dicompyler worked with MR images too, as this modality is 
being used in radiotherapy too.

Best regards,
Chris

Original issue reported on code.google.com by [email protected] on 2 Aug 2011 at 7:36

Attachments:

2D View labels disappear if slice is out of bounds of dose matrix

What steps will reproduce the problem?
1. Scroll to a slice outside of the dose matrix

What is the expected output? What do you see instead?
The labels should stay on the 2D image. However, they disappear since the 
drawing pipeline gets disrupted since the dose matrix does not exist on the 
slice.

As soon as you scroll back to a slice where the dose matrix exists, the labels 
are restored.

This should be able to be fixed by checking whether the matrix exists before 
starting the drawing pipeline.


Original issue reported on code.google.com by bastula on 6 Oct 2010 at 10:55

RT Dose files with Differential DVHs are not loaded properly

What steps will reproduce the problem?
1. Import a RT Plan set with images, structures, plan, and dose /w differential 
DVHs

What is the expected output? What do you see instead?
The processing progresses until 100%, where it stops.

The following traceback is given:

Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "/Library/Frameworks/Python.framework/Versions/2.6/lib/python2.6/threading.py", line 484, in run
    self.__target(*self.__args, **self.__kwargs)
  File "main.py", line 280, in LoadPatientDataThread
    dvh['min'] = dvhdoses.get_dvh_min(dvh['data'], ptdata['rxdose'])
  File "/Projects/python/dicompyler/dvhdoses.py", line 27, in get_dvh_min
    mindose = 100*mindose/doseref
UnboundLocalError: local variable 'mindose' referenced before assignment

Please use labels and text to provide additional information.

Basically, the mindose cannot be calculated, because the function assumes it is 
receiving a cDVH array. The proper fix is to convert the dDVH to to a cDVH then 
allow the calculation to proceed.

The easiest workaround is to change line 322 in dicomparser.py to:
    if self.HasDVHs():

Original issue reported on code.google.com by bastula on 7 Oct 2010 at 1:49

Application hangs if ROIDisplayColor is Missing from a Structure

running DICOMPYLER on Ubuntu 10.10 both of which are up to date (hg update 
pulls nothing new). It is a new install since previous comments (#22).

Attempting to open a Pinnacle-created DICOM-RT. After loading the DCMs and 
specifying prescription dose (7800), loaded study and DICOMPYLER hung. Here is 
the output from the CLI:


Found ROI #1: iso
Found ROI #2: laser
Found ROI #3: calc
Found ROI #4: Seeds
Found ROI #5: CTVp
Found ROI #6: RECTUM
Found ROI #7: BLADDER
Found ROI #8: PTV78
Found ROI #9: CTVn
Found ROI #10: PTV56
Found ROI #11: penumbra
Found ROI #12: PERITONEUM
Found ROI #13: PERITONEUM_PRV
Found ROI #14: RECTUM_PRV
Found ROI #15: BLADDER_PRV
Found ROI #16: Lt HOF
Found ROI #17: Rt HOF
Found ROI #18: ring 78
Found ROI #19: ring 56
Found ROI #20: markers
Found ROI #21: Ring
Found ROI #22: 2cm ring 78
Found ROI #23: 2cm ring 56
Found ROI #24: lt hotspot
Found ROI #25: rt hotspot
Found ROI #26: ant avoid
Exception in thread Thread-3:
Traceback (most recent call last):
  File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.6/threading.py", line 484, in run
    self.__target(*self.__args, **self.__kwargs)
  File "./main.py", line 252, in LoadPatientDataThread
    patient['structures'] = dp(ptdata['rtss']).GetStructures()
  File "/home/andrew/dicompyler/dicomparser.py", line 254, in GetStructures
    structures[number]['color'] = np.array(roi.ROIDisplayColor, dtype=float)
  File "/usr/local/lib/python2.6/dist-packages/pydicom-0.9.5-py2.6.egg/dicom/dataset.py", line 237, in __getattr__
    raise AttributeError, "Dataset does not have attribute '%s'." % name
AttributeError: Dataset does not have attribute 'ROIDisplayColor'.

As you can see there are many ROIs.

Have we had this problem before??

Original issue reported on code.google.com by [email protected] on 21 Feb 2011 at 7:13

Consider allowing toolbar items for menu plugins

Currently only tab / main plugins can have toolbar items because they 
tab-context specific.

However, it may be useful for menu plugins to also have toolbar buttons for 
quick access.

This may be accomplished by having these toolbar items display at all times 
regardless of the tab selected.

Probably the best location would be in the __init__ method of the menu plugin.

Additionally, documentation needs to be added to the plugin development guide 
for toolbar items for both tab and future menu plugins.

Original issue reported on code.google.com by bastula on 15 Aug 2011 at 12:58

Implement importing of multiple planar RT Dose files as a single RT Dose grid

What steps will reproduce the problem?

1. Try to load a set of RT Dose planes but dicompyler will only import one at 
any given time.

What is the expected output? What do you see instead?

Load all the RT Dose files and show the dose grid. Only a single file. This 
works for DVH data, as it is stored in each RT Dose file, but only a portion of 
the dose grid is stored in each file.

This can be addressed by compiling each dose file similar to the way images are 
compiled, but presenting it to the user as a single series of RT Dose files 
rather than individual files.

Original issue reported on code.google.com by bastula on 3 Jul 2010 at 4:10

The zoomed image doesn't follow the pointer (plugin 2D view)

What steps will reproduce the problem?
1. Open any image in 2D view
2. Zoom in
3. Click left and move

What is the expected output? What do you see instead?
We expect that the image follows the pointer.
The image moves faster.

What version of the product are you using? On what operating system?
dicompiler 0.4a1 under fedora (linux)

Please provide any additional information below.
Attached a patch using the zoom variable.

Original issue reported on code.google.com by [email protected] on 29 Mar 2011 at 2:33

Attachments:

Isodose max incorrect value / Support RT Dose for individual beams

What steps will reproduce the problem?
1.Emported structure/dose/CT set.  CT set was 172 images, dose was exported as 
absolute.  
2.Imported into dicompyler
3.

What is the expected output? What do you see instead?

Expected ~125-130% dosemax (Isodose list screenshot attached)
Only 2D isodose level to show up was 30%.

What version of the product are you using? On what operating system?

dicompyler-0.4a2 [source]
Windows 7 64bit

Please provide any additional information below.

When selecting BODY from structure list, received error when calculating volume:
return self.dvh[int(dose/self.scaling)]
IndexError: index out of bounds

Original issue reported on code.google.com by [email protected] on 28 May 2011 at 5:12

Attachments:

Add scale to 2D view for easier measuring

Currently there is no scale and you have to measure by mouse cursor. A scale 
would help the user to better gauge the size of the displayed image.

The scale should be allowed to be arbitrarily moved by the mouse cursor to 
facilitate identifying positions of treatment aids such as BBs.

Original issue reported on code.google.com by bastula on 13 May 2011 at 4:17

Problem loading binary(?) data into DICOM data tree

Using change set b2db1399c5 (26 Nov. 2010).

I'm getting an error when I load some images in the treeview plugin if they 
contain LargestImagePixelValue or SmallestImagePixelValue entries. It appears 
that these values are stored as binary data (not quite sure), but treeview.py 
tries to read them as unicode.

Here's the error messages (for different CT images):

.../baseplugins/treeview.py", line 178, in AddItemTree
    self.tlcTreeView.SetItemText(item, unicode(data_element.value), 1)
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 0-1: invalid 
data

.../baseplugins/treeview.py", line 178, in AddItemTree
    self.tlcTreeView.SetItemText(item, unicode(data_element.value), 1)
UnicodeDecodeError: 'utf8' codec can't decode byte 0xb2 in position 0: 
unexpected code byte


The code throwing the error is found in AddItemTree in treeview.py. We could 
make exceptions specifically for these tags, *PixelValue, but a more general 
solution sounds better.

As a side note, I'm not sure what the first else is doing in AddItemTree:

        else:
            # Account for unicode or string values
            if isinstance(data_element.value, unicode):
                item = self.tlcTreeView.AppendItem(parent, text=unicode(data_element.name))
            else:
                item = self.tlcTreeView.AppendItem(parent, text=str(data_element.name)

It seems to be testing the "value", but acting on the "name".

Original issue reported on code.google.com by [email protected] on 2 Dec 2010 at 7:35

Incorrect or Missing Rx Dose causes Errors

What steps will reproduce the problem?
1. Open a set of dicom files including CT, Struct, Plan and Dose
2. Scroll through images works fine. When I select any of the available ROIs, I 
can see in the log that an exception has been raised [1].
3. When trying to scroll (mousewheel) through the images slices following this, 
nothing happens. I have to deselct the ROI in order to continue scrolling 
through the images.

What is the expected output? What do you see instead?
The expected output is to get structure information at the bottom left, and to 
be able to scroll through the images with the ROI delineated in the slices.

Instead I see no structure information and scrolling is halted.

What version of the product are you using? On what operating system?
dicompyler version 0.4a2
WinXp 32bit

Please provide any additional information below.
I dont know if this is related, but when I open the files, it complains that:
RX dose not found in RT Plan.

The DICOM files are exported from the Oncentra MasterPlan treatment planning 
system.

Regards,
Chris

Original issue reported on code.google.com by [email protected] on 28 Jul 2011 at 1:39

Attachments:

Calculate DVHs from RT Dose files that do not contain DVHs

What steps will reproduce the problem?
1. Read a DICOM RT Dose file without DVHs
2. dicompyler cannot open the file because it currently does not calculate the 
DVH, but uses the 
DICOM provided DVH.

What is the expected output? What do you see instead?

dicompyler should be able to calculate the DVHs. This would allow more RT Dose 
files to be used 
with the platform.

Original issue reported on code.google.com by bastula on 3 Mar 2010 at 10:04

DVH cursor not tracking with curve

What steps will reproduce the problem?

1. Load test data set (breast plan)
2. Select Borders or Nodes
3. Select Dose Constraint (D_)
4. Scroll horizontal constraint bar

What is the expected output? What do you see instead?

Constraint marker should travel smoothly along DVH curve, but instead it
jumps along a stair-step path. This is due to the curve being interpolated
but the marker following the data points themselves. Should all DVH's have
the same end value instead of being rescaled along the x axis?

What version of the product are you using? On what operating system?

Oct. 18th update on Ubuntu 9.04, matplotlib 0.98.5.2, WxMpl 1.3.1, WxPython
2.8.9.1

Please provide any additional information below.

Dicompyler!!!

Original issue reported on code.google.com by [email protected] on 30 Oct 2009 at 7:54

Attachments:

No scrollbar in structures and isodoses tabs

What steps will reproduce the problem?
1. Open a file with a lot of structures

What is the expected output? What do you see instead?
It's impossible to see all the structures.

What version of the product are you using? On what operating system?
Dicompyler 0.4a1 under Fedora (linux).

Please provide any additional information below.
Attached a patch using wx.ScrolledWindow

Original issue reported on code.google.com by [email protected] on 28 Mar 2011 at 4:14

Attachments:

build instructions absent

There doesn't seem to be a build instructions page.
The "build instructions" link in Project Home just points to
BuildRequirements.  

Original issue reported on code.google.com by [email protected] on 25 Aug 2010 at 4:10

Smooth isodose curves before drawing to screen

This issue was created by revision 9da0f34cf2.

Now that the new matplotlib backend for isodose curve generation has been 
implemented, the curves need to be smoothed for better visual presentation.
This could be accomplished by various window methods in numpy. See the 
following link for more information: http://www.scipy.org/Cookbook/SignalSmooth

Original issue reported on code.google.com by bastula on 10 Dec 2010 at 5:13

Improve support for more tags in the anonymizer plugin

Some DICOM tags will not be anonymized when using the anonymizer.

A list of tags that could potentially be anonymized can be found in Part 3 of 
the DICOM standard. It would probably be useful if this document is combed (by 
inspection) to find tags which could potentially contain patient/institution 
identifying data.

Until then, we will rely on user reports of tags that haven't been anonymized.

Original issue reported on code.google.com by bastula on 4 Jun 2011 at 7:55

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.