I’ve checked the Dose Volume Histogram module and it can actually use any scalar volume as “dose volume”, you just need to uncheck Show dose volumes only
checkbox.
If you want to make a scalar volume a full-fledged dose volume then execute this script:
import SampleData
volumeNode = SampleData.SampleDataLogic().downloadMRHead()
# Create patient and study and put the volume under the study
shNode = slicer.modules.subjecthierarchy.logic().GetSubjectHierarchyNode()
patientItemID = shNode.CreateSubjectItem(shNode.GetSceneItemID(), "Patient 1")
studyItemID = shNode.CreateStudyItem(patientItemID, "Study 1")
volumeShItemID = shNode.GetItemByDataNode(volumeNode)
shNode.SetItemParent(volumeShItemID, studyItemID)
# Set volume node appear as dose volume
volumeNode.SetAttribute("DicomRtImport.DoseVolume","1")
volumeNode.GetDisplayNode().SetAndObserveColorNodeID("vtkMRMLColorTableNodeFilePlasma.txt")
shNode.SetItemAttribute(studyItemID, "DicomRtImport.DoseUnitName", "GY")
shNode.SetItemAttribute(studyItemID, "DicomRtImport.DoseUnitValue", "1e-6")
shNode.RequestOwnerPluginSearch(volumeShItemID)
The DVH module can also compute metrics of the dose distribution. V and D metric allow you to specify a dose value or a volume (absolute or percentage) and give you the corresponding volume or dose value, respectively. It can be used to quickly evaluate the quality of the treatment, for example it can tell you what percentage of the volume received sufficient dose; or how much dose was delivered to 95% of the volume.
These all are very expressive and clinically widely used metrics. I would strongly recommend to use these instead of trying to invent something new.
You may also find DVH comparison module useful. It can determine how well a dose distribution matches the planned distribution. This is used for example to assess effect of patient motion.