Commit 0ce0c1ddee765505bde26017a4f55019c75cc0f0
1 parent
febef67f
Exists in
master
and in
68 other branches
ENH: Choose the best image resolution in accordance with the amount of memory in…
…stalled, (Tested in the Windows) #76
Showing
3 changed files
with
124 additions
and
66 deletions
Show diff stats
invesalius/constants.py
| @@ -227,12 +227,7 @@ WINDOW_LEVEL = {_("Abdomen"):(350,50), | @@ -227,12 +227,7 @@ WINDOW_LEVEL = {_("Abdomen"):(350,50), | ||
| 227 | _("Vasculature - Hard"):(240,80), | 227 | _("Vasculature - Hard"):(240,80), |
| 228 | _("Vasculature - Soft"):(650,160)} | 228 | _("Vasculature - Soft"):(650,160)} |
| 229 | 229 | ||
| 230 | -if (sys.platform == 'win32') and (platform.architecture()[0] == '32bit'): | ||
| 231 | - REDUCE_IMAGEDATA_QUALITY = 1 | ||
| 232 | -elif (sys.platform == 'darwin'): | ||
| 233 | - REDUCE_IMAGEDATA_QUALITY = 1 | ||
| 234 | -else: | ||
| 235 | - REDUCE_IMAGEDATA_QUALITY = 0 | 230 | +REDUCE_IMAGEDATA_QUALITY = 0 |
| 236 | 231 | ||
| 237 | ICON_DIR = os.path.abspath(os.path.join('..', 'icons')) | 232 | ICON_DIR = os.path.abspath(os.path.join('..', 'icons')) |
| 238 | 233 | ||
| @@ -257,8 +252,8 @@ _("Black & White") | @@ -257,8 +252,8 @@ _("Black & White") | ||
| 257 | _("Bone + Skin") | 252 | _("Bone + Skin") |
| 258 | _("Bone + Skin II") | 253 | _("Bone + Skin II") |
| 259 | _("Dark Bone") | 254 | _("Dark Bone") |
| 260 | -_("Glossy") | ||
| 261 | -_("Glossy II") | 255 | +_("Glossy") |
| 256 | +_("Glossy II") | ||
| 262 | _("Gold Bone") | 257 | _("Gold Bone") |
| 263 | _("High Contrast") | 258 | _("High Contrast") |
| 264 | _("Low Contrast") | 259 | _("Low Contrast") |
| @@ -339,7 +334,7 @@ FILETYPE_VRML = wx.NewId() | @@ -339,7 +334,7 @@ FILETYPE_VRML = wx.NewId() | ||
| 339 | FILETYPE_OBJ = wx.NewId() | 334 | FILETYPE_OBJ = wx.NewId() |
| 340 | FILETYPE_VTP = wx.NewId() | 335 | FILETYPE_VTP = wx.NewId() |
| 341 | FILETYPE_PLY = wx.NewId() | 336 | FILETYPE_PLY = wx.NewId() |
| 342 | - | 337 | + |
| 343 | FILETYPE_IMAGEDATA = wx.NewId() | 338 | FILETYPE_IMAGEDATA = wx.NewId() |
| 344 | 339 | ||
| 345 | FILETYPE_BMP = wx.NewId() | 340 | FILETYPE_BMP = wx.NewId() |
invesalius/data/imagedata_utils.py
| @@ -49,16 +49,14 @@ def ResampleImage3D(imagedata, value): | @@ -49,16 +49,14 @@ def ResampleImage3D(imagedata, value): | ||
| 49 | 49 | ||
| 50 | return resample.GetOutput() | 50 | return resample.GetOutput() |
| 51 | 51 | ||
| 52 | -def ResampleImage2D(imagedata, xy_dimension, | 52 | +def ResampleImage2D(imagedata, px, py, |
| 53 | update_progress = None): | 53 | update_progress = None): |
| 54 | """ | 54 | """ |
| 55 | Resample vtkImageData matrix. | 55 | Resample vtkImageData matrix. |
| 56 | """ | 56 | """ |
| 57 | extent = imagedata.GetExtent() | 57 | extent = imagedata.GetExtent() |
| 58 | - print "-----------------------------" | ||
| 59 | - print "extent:", extent | ||
| 60 | spacing = imagedata.GetSpacing() | 58 | spacing = imagedata.GetSpacing() |
| 61 | - print "spacing:", spacing | 59 | + |
| 62 | 60 | ||
| 63 | #if extent[1]==extent[3]: | 61 | #if extent[1]==extent[3]: |
| 64 | # f = extent[1] | 62 | # f = extent[1] |
| @@ -68,26 +66,24 @@ def ResampleImage2D(imagedata, xy_dimension, | @@ -68,26 +66,24 @@ def ResampleImage2D(imagedata, xy_dimension, | ||
| 68 | # f = extent[3] | 66 | # f = extent[3] |
| 69 | 67 | ||
| 70 | if abs(extent[1]-extent[3]) < abs(extent[3]-extent[5]): | 68 | if abs(extent[1]-extent[3]) < abs(extent[3]-extent[5]): |
| 71 | - print 1 | ||
| 72 | f = extent[1] | 69 | f = extent[1] |
| 73 | elif abs(extent[1]-extent[5]) < abs(extent[1] - extent[3]): | 70 | elif abs(extent[1]-extent[5]) < abs(extent[1] - extent[3]): |
| 74 | - print 2 | ||
| 75 | f = extent[1] | 71 | f = extent[1] |
| 76 | elif abs(extent[3]-extent[5]) < abs(extent[1] - extent[3]): | 72 | elif abs(extent[3]-extent[5]) < abs(extent[1] - extent[3]): |
| 77 | - print 3 | ||
| 78 | f = extent[3] | 73 | f = extent[3] |
| 79 | else: | 74 | else: |
| 80 | - print 4 | ||
| 81 | f = extent[1] | 75 | f = extent[1] |
| 82 | - | ||
| 83 | 76 | ||
| 84 | - factor = xy_dimension/float(f+1) | 77 | + |
| 78 | + factor_x = px/float(f+1) | ||
| 79 | + factor_y = py/float(f+1) | ||
| 80 | + | ||
| 85 | 81 | ||
| 86 | resample = vtk.vtkImageResample() | 82 | resample = vtk.vtkImageResample() |
| 87 | resample.SetInput(imagedata) | 83 | resample.SetInput(imagedata) |
| 88 | - resample.SetAxisMagnificationFactor(0, factor) | ||
| 89 | - resample.SetAxisMagnificationFactor(1, factor) | ||
| 90 | - resample.SetOutputSpacing(spacing[0] * factor, spacing[1] * factor, spacing[2]) | 84 | + resample.SetAxisMagnificationFactor(0, factor_x) |
| 85 | + resample.SetAxisMagnificationFactor(1, factor_y) | ||
| 86 | + resample.SetOutputSpacing(spacing[0] * factor_x, spacing[1] * factor_y, spacing[2]) | ||
| 91 | if (update_progress): | 87 | if (update_progress): |
| 92 | message = "Generating multiplanar visualization..." | 88 | message = "Generating multiplanar visualization..." |
| 93 | resample.AddObserver("ProgressEvent", lambda obj, | 89 | resample.AddObserver("ProgressEvent", lambda obj, |
| @@ -189,7 +185,7 @@ def View(imagedata): | @@ -189,7 +185,7 @@ def View(imagedata): | ||
| 189 | viewer.SetColorWindow(200) | 185 | viewer.SetColorWindow(200) |
| 190 | viewer.SetColorLevel(100) | 186 | viewer.SetColorLevel(100) |
| 191 | viewer.Render() | 187 | viewer.Render() |
| 192 | - | 188 | + |
| 193 | import time | 189 | import time |
| 194 | time.sleep(10) | 190 | time.sleep(10) |
| 195 | 191 | ||
| @@ -199,40 +195,50 @@ def ViewGDCM(imagedata): | @@ -199,40 +195,50 @@ def ViewGDCM(imagedata): | ||
| 199 | viewer.SetColorWindow(500.) | 195 | viewer.SetColorWindow(500.) |
| 200 | viewer.SetColorLevel(50.) | 196 | viewer.SetColorLevel(50.) |
| 201 | viewer.Render() | 197 | viewer.Render() |
| 202 | - | 198 | + |
| 203 | import time | 199 | import time |
| 204 | time.sleep(5) | 200 | time.sleep(5) |
| 205 | 201 | ||
| 206 | 202 | ||
| 207 | - | 203 | + |
| 208 | def ExtractVOI(imagedata,xi,xf,yi,yf,zi,zf): | 204 | def ExtractVOI(imagedata,xi,xf,yi,yf,zi,zf): |
| 209 | """ | 205 | """ |
| 210 | - Cropping the vtkImagedata according | 206 | + Cropping the vtkImagedata according |
| 211 | with values. | 207 | with values. |
| 212 | - """ | 208 | + """ |
| 213 | voi = vtk.vtkExtractVOI() | 209 | voi = vtk.vtkExtractVOI() |
| 214 | voi.SetVOI(xi,xf,yi,yf,zi,zf) | 210 | voi.SetVOI(xi,xf,yi,yf,zi,zf) |
| 215 | voi.SetInput(imagedata) | 211 | voi.SetInput(imagedata) |
| 216 | voi.SetSampleRate(1, 1, 1) | 212 | voi.SetSampleRate(1, 1, 1) |
| 217 | - voi.Update() | 213 | + voi.Update() |
| 218 | return voi.GetOutput() | 214 | return voi.GetOutput() |
| 219 | 215 | ||
| 220 | def CreateImageData(filelist, zspacing, size, bits): | 216 | def CreateImageData(filelist, zspacing, size, bits): |
| 221 | message = "Generating multiplanar visualization..." | 217 | message = "Generating multiplanar visualization..." |
| 222 | - | 218 | + |
| 223 | if not const.VTK_WARNING: | 219 | if not const.VTK_WARNING: |
| 224 | fow = vtk.vtkFileOutputWindow() | 220 | fow = vtk.vtkFileOutputWindow() |
| 225 | fow.SetFileName('vtkoutput.txt') | 221 | fow.SetFileName('vtkoutput.txt') |
| 226 | ow = vtk.vtkOutputWindow() | 222 | ow = vtk.vtkOutputWindow() |
| 227 | ow.SetInstance(fow) | 223 | ow.SetInstance(fow) |
| 228 | - | 224 | + |
| 225 | + x,y = size | ||
| 226 | + px, py = utils.PredictingMemory(len(filelist), x, y, bits) | ||
| 227 | + | ||
| 228 | + print "Image Resized to >>>", px, "x", py | ||
| 229 | + | ||
| 230 | + if (x == px) and (y == py): | ||
| 231 | + const.REDUCE_IMAGEDATA_QUALITY = 0 | ||
| 232 | + else: | ||
| 233 | + const.REDUCE_IMAGEDATA_QUALITY = 1 | ||
| 234 | + | ||
| 229 | if not(const.REDUCE_IMAGEDATA_QUALITY): | 235 | if not(const.REDUCE_IMAGEDATA_QUALITY): |
| 230 | update_progress= vtk_utils.ShowProgress(1, dialog_type = "ProgressDialog") | 236 | update_progress= vtk_utils.ShowProgress(1, dialog_type = "ProgressDialog") |
| 231 | 237 | ||
| 232 | array = vtk.vtkStringArray() | 238 | array = vtk.vtkStringArray() |
| 233 | for x in xrange(len(filelist)): | 239 | for x in xrange(len(filelist)): |
| 234 | array.InsertValue(x,filelist[x]) | 240 | array.InsertValue(x,filelist[x]) |
| 235 | - | 241 | + |
| 236 | reader = vtkgdcm.vtkGDCMImageReader() | 242 | reader = vtkgdcm.vtkGDCMImageReader() |
| 237 | reader.SetFileNames(array) | 243 | reader.SetFileNames(array) |
| 238 | reader.AddObserver("ProgressEvent", lambda obj,evt: | 244 | reader.AddObserver("ProgressEvent", lambda obj,evt: |
| @@ -245,16 +251,14 @@ def CreateImageData(filelist, zspacing, size, bits): | @@ -245,16 +251,14 @@ def CreateImageData(filelist, zspacing, size, bits): | ||
| 245 | spacing = imagedata.GetSpacing() | 251 | spacing = imagedata.GetSpacing() |
| 246 | imagedata.SetSpacing(spacing[0], spacing[1], zspacing) | 252 | imagedata.SetSpacing(spacing[0], spacing[1], zspacing) |
| 247 | else: | 253 | else: |
| 248 | - | 254 | + |
| 249 | update_progress= vtk_utils.ShowProgress(2*len(filelist), | 255 | update_progress= vtk_utils.ShowProgress(2*len(filelist), |
| 250 | dialog_type = "ProgressDialog") | 256 | dialog_type = "ProgressDialog") |
| 251 | 257 | ||
| 252 | # Reformat each slice and future append them | 258 | # Reformat each slice and future append them |
| 253 | appender = vtk.vtkImageAppend() | 259 | appender = vtk.vtkImageAppend() |
| 254 | appender.SetAppendAxis(2) #Define Stack in Z | 260 | appender.SetAppendAxis(2) #Define Stack in Z |
| 255 | - | ||
| 256 | - x,y = size | ||
| 257 | - p = utils.PredictingMemory(len(filelist), x, y, bits) | 261 | + |
| 258 | 262 | ||
| 259 | # Reformat each slice | 263 | # Reformat each slice |
| 260 | for x in xrange(len(filelist)): | 264 | for x in xrange(len(filelist)): |
| @@ -266,9 +270,9 @@ def CreateImageData(filelist, zspacing, size, bits): | @@ -266,9 +270,9 @@ def CreateImageData(filelist, zspacing, size, bits): | ||
| 266 | reader.AddObserver("ProgressEvent", lambda obj,evt: | 270 | reader.AddObserver("ProgressEvent", lambda obj,evt: |
| 267 | update_progress(reader,message)) | 271 | update_progress(reader,message)) |
| 268 | reader.Update() | 272 | reader.Update() |
| 269 | - | 273 | + |
| 270 | #Resample image in x,y dimension | 274 | #Resample image in x,y dimension |
| 271 | - slice_imagedata = ResampleImage2D(reader.GetOutput(), p, update_progress) | 275 | + slice_imagedata = ResampleImage2D(reader.GetOutput(), px, py, update_progress) |
| 272 | #Stack images in Z axes | 276 | #Stack images in Z axes |
| 273 | appender.AddInput(slice_imagedata) | 277 | appender.AddInput(slice_imagedata) |
| 274 | #appender.AddObserver("ProgressEvent", lambda obj,evt:update_progress(appender)) | 278 | #appender.AddObserver("ProgressEvent", lambda obj,evt:update_progress(appender)) |
| @@ -284,7 +288,7 @@ def CreateImageData(filelist, zspacing, size, bits): | @@ -284,7 +288,7 @@ def CreateImageData(filelist, zspacing, size, bits): | ||
| 284 | imagedata.AddObserver("ProgressEvent", lambda obj,evt: | 288 | imagedata.AddObserver("ProgressEvent", lambda obj,evt: |
| 285 | update_progress(imagedata,message)) | 289 | update_progress(imagedata,message)) |
| 286 | imagedata.Update() | 290 | imagedata.Update() |
| 287 | - | 291 | + |
| 288 | return imagedata | 292 | return imagedata |
| 289 | 293 | ||
| 290 | 294 | ||
| @@ -292,25 +296,25 @@ def CreateImageData(filelist, zspacing, size, bits): | @@ -292,25 +296,25 @@ def CreateImageData(filelist, zspacing, size, bits): | ||
| 292 | class ImageCreator: | 296 | class ImageCreator: |
| 293 | def __init__(self): | 297 | def __init__(self): |
| 294 | ps.Publisher().sendMessage("Cancel imagedata load", self.CancelImageDataLoad) | 298 | ps.Publisher().sendMessage("Cancel imagedata load", self.CancelImageDataLoad) |
| 295 | - | 299 | + |
| 296 | def CancelImageDataLoad(self, evt_pusub): | 300 | def CancelImageDataLoad(self, evt_pusub): |
| 297 | self.running = evt_pusub.data | 301 | self.running = evt_pusub.data |
| 298 | - | 302 | + |
| 299 | def CreateImageData(filelist, zspacing): | 303 | def CreateImageData(filelist, zspacing): |
| 300 | message = "Generating multiplanar visualization..." | 304 | message = "Generating multiplanar visualization..." |
| 301 | if not(const.REDUCE_IMAGEDATA_QUALITY): | 305 | if not(const.REDUCE_IMAGEDATA_QUALITY): |
| 302 | update_progress= vtk_utils.ShowProgress(1) | 306 | update_progress= vtk_utils.ShowProgress(1) |
| 303 | - | 307 | + |
| 304 | array = vtk.vtkStringArray() | 308 | array = vtk.vtkStringArray() |
| 305 | for x in xrange(len(filelist)): | 309 | for x in xrange(len(filelist)): |
| 306 | array.InsertValue(x,filelist[x]) | 310 | array.InsertValue(x,filelist[x]) |
| 307 | - | 311 | + |
| 308 | reader = vtkgdcm.vtkGDCMImageReader() | 312 | reader = vtkgdcm.vtkGDCMImageReader() |
| 309 | reader.SetFileNames(array) | 313 | reader.SetFileNames(array) |
| 310 | reader.AddObserver("ProgressEvent", lambda obj,evt: | 314 | reader.AddObserver("ProgressEvent", lambda obj,evt: |
| 311 | update_progress(reader,message)) | 315 | update_progress(reader,message)) |
| 312 | reader.Update() | 316 | reader.Update() |
| 313 | - | 317 | + |
| 314 | # The zpacing is a DicomGroup property, so we need to set it | 318 | # The zpacing is a DicomGroup property, so we need to set it |
| 315 | imagedata = vtk.vtkImageData() | 319 | imagedata = vtk.vtkImageData() |
| 316 | imagedata.DeepCopy(reader.GetOutput()) | 320 | imagedata.DeepCopy(reader.GetOutput()) |
| @@ -319,11 +323,11 @@ class ImageCreator: | @@ -319,11 +323,11 @@ class ImageCreator: | ||
| 319 | else: | 323 | else: |
| 320 | update_progress= vtk_utils.ShowProgress(2*len(filelist), | 324 | update_progress= vtk_utils.ShowProgress(2*len(filelist), |
| 321 | dialog_type = "ProgressDialog") | 325 | dialog_type = "ProgressDialog") |
| 322 | - | 326 | + |
| 323 | # Reformat each slice and future append them | 327 | # Reformat each slice and future append them |
| 324 | appender = vtk.vtkImageAppend() | 328 | appender = vtk.vtkImageAppend() |
| 325 | appender.SetAppendAxis(2) #Define Stack in Z | 329 | appender.SetAppendAxis(2) #Define Stack in Z |
| 326 | - | 330 | + |
| 327 | # Reformat each slice | 331 | # Reformat each slice |
| 328 | for x in xrange(len(filelist)): | 332 | for x in xrange(len(filelist)): |
| 329 | # TODO: We need to check this automatically according | 333 | # TODO: We need to check this automatically according |
| @@ -334,27 +338,27 @@ class ImageCreator: | @@ -334,27 +338,27 @@ class ImageCreator: | ||
| 334 | reader.AddObserver("ProgressEvent", lambda obj,evt: | 338 | reader.AddObserver("ProgressEvent", lambda obj,evt: |
| 335 | update_progress(reader,message)) | 339 | update_progress(reader,message)) |
| 336 | reader.Update() | 340 | reader.Update() |
| 337 | - | 341 | + |
| 338 | #Resample image in x,y dimension | 342 | #Resample image in x,y dimension |
| 339 | - | 343 | + |
| 340 | slice_imagedata = ResampleImage2D(reader.GetOutput(), 256, update_progress) | 344 | slice_imagedata = ResampleImage2D(reader.GetOutput(), 256, update_progress) |
| 341 | - | 345 | + |
| 342 | #Stack images in Z axes | 346 | #Stack images in Z axes |
| 343 | appender.AddInput(slice_imagedata) | 347 | appender.AddInput(slice_imagedata) |
| 344 | #appender.AddObserver("ProgressEvent", lambda obj,evt:update_progress(appender)) | 348 | #appender.AddObserver("ProgressEvent", lambda obj,evt:update_progress(appender)) |
| 345 | appender.Update() | 349 | appender.Update() |
| 346 | - | 350 | + |
| 347 | # The zpacing is a DicomGroup property, so we need to set it | 351 | # The zpacing is a DicomGroup property, so we need to set it |
| 348 | imagedata = vtk.vtkImageData() | 352 | imagedata = vtk.vtkImageData() |
| 349 | imagedata.DeepCopy(appender.GetOutput()) | 353 | imagedata.DeepCopy(appender.GetOutput()) |
| 350 | spacing = imagedata.GetSpacing() | 354 | spacing = imagedata.GetSpacing() |
| 351 | - | 355 | + |
| 352 | imagedata.SetSpacing(spacing[0], spacing[1], zspacing) | 356 | imagedata.SetSpacing(spacing[0], spacing[1], zspacing) |
| 353 | - | 357 | + |
| 354 | imagedata.AddObserver("ProgressEvent", lambda obj,evt: | 358 | imagedata.AddObserver("ProgressEvent", lambda obj,evt: |
| 355 | update_progress(imagedata,message)) | 359 | update_progress(imagedata,message)) |
| 356 | imagedata.Update() | 360 | imagedata.Update() |
| 357 | - | 361 | + |
| 358 | return imagedata | 362 | return imagedata |
| 359 | """ | 363 | """ |
| 360 | 364 |
invesalius/utils.py
| @@ -16,9 +16,11 @@ | @@ -16,9 +16,11 @@ | ||
| 16 | # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais | 16 | # PARTICULAR. Consulte a Licenca Publica Geral GNU para obter mais |
| 17 | # detalhes. | 17 | # detalhes. |
| 18 | #-------------------------------------------------------------------------- | 18 | #-------------------------------------------------------------------------- |
| 19 | +import os | ||
| 20 | +import platform | ||
| 19 | import subprocess | 21 | import subprocess |
| 20 | import re | 22 | import re |
| 21 | -import os | 23 | +import sys |
| 22 | 24 | ||
| 23 | 25 | ||
| 24 | def debug(error_str): | 26 | def debug(error_str): |
| @@ -91,19 +93,73 @@ def frange(start, end=None, inc=None): | @@ -91,19 +93,73 @@ def frange(start, end=None, inc=None): | ||
| 91 | def PredictingMemory(qtd, x, y, p): | 93 | def PredictingMemory(qtd, x, y, p): |
| 92 | m = qtd * (x * y * p) | 94 | m = qtd * (x * y * p) |
| 93 | 95 | ||
| 94 | - #314859200 = 350 MB | ||
| 95 | - #house 25 MB increases the | ||
| 96 | - #factor 0.4 | ||
| 97 | - if (m >= 314859200): | ||
| 98 | - porcent = 1.5 + (m - 314859200) / 26999999 * 0.04 | ||
| 99 | - x = x/porcent | ||
| 100 | - y = y/porcent | ||
| 101 | - return x | 96 | + if (sys.platform == 'win32'): |
| 97 | + | ||
| 98 | + physical_memory = GetWindowsInformation()[3] | ||
| 99 | + | ||
| 100 | + if (platform.architecture()[0] == '32bit'): | ||
| 101 | + #(314859200 = 300 MB) | ||
| 102 | + #(26999999 = 25 MB) | ||
| 103 | + | ||
| 104 | + #case occupy more than 300 MB image is reduced to 1.5, | ||
| 105 | + #and 25 MB each image is resized 0.04. | ||
| 106 | + if (m >= 314859200): | ||
| 107 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.04 | ||
| 108 | + else: | ||
| 109 | + return (x, y) | ||
| 110 | + else: #64 bits architecture | ||
| 111 | + | ||
| 112 | + if (physical_memory <= 2.0) and (qtd <= 1200): | ||
| 113 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 | ||
| 114 | + | ||
| 115 | + elif(physical_memory <= 2.0) and (qtd > 1200): | ||
| 116 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.03 | ||
| 117 | + | ||
| 118 | + elif(physical_memory > 2.0) and (physical_memory <= 4.0) and (qtd <= 1200): | ||
| 119 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.01 | ||
| 120 | + | ||
| 121 | + else: | ||
| 122 | + return (x,y) | ||
| 123 | + | ||
| 124 | + return (x/porcent, y/porcent) | ||
| 102 | 125 | ||
| 103 | - else: | ||
| 104 | - return x | 126 | + elif(sys.platform == 'linux2'): |
| 127 | + | ||
| 128 | + physical_memory = GetLinuxInformation()[2] | ||
| 129 | + | ||
| 130 | + if (platform.architecture()[0] == '32bit'): | ||
| 131 | + # 839000000 = 800 MB | ||
| 132 | + if (m <= 839000000) and (physical_memory <= 2.0): | ||
| 133 | + return (x,y) | ||
| 134 | + elif (m > 839000000) and (physical_memory <= 2.0) and (qtd <= 1200): | ||
| 135 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 | ||
| 136 | + else: | ||
| 137 | + return (x,y) | ||
| 138 | + | ||
| 139 | + else: | ||
| 140 | + | ||
| 141 | + if (m <= 839000000) and (physical_memory <= 2.0): | ||
| 142 | + return (x, y) | ||
| 143 | + elif (m > 839000000) and (physical_memory <= 2.0) and (qtd <= 1200): | ||
| 144 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 | ||
| 145 | + else: | ||
| 146 | + return (x,y) | ||
| 147 | + | ||
| 148 | + return (x/porcent, y/porcent) | ||
| 149 | + | ||
| 150 | + elif(sys.platform == 'darwin'): | ||
| 151 | + | ||
| 152 | + physical_memory = GetDarwinInformation() | ||
| 153 | + | ||
| 154 | + if (m <= 839000000) and (physical_memory <= 2.0): | ||
| 155 | + return (x, y) | ||
| 156 | + elif (m > 839000000) and (physical_memory <= 2.0) and (qtd <= 1200): | ||
| 157 | + porcent = 1.5 + (m - 314859200) / 26999999 * 0.02 | ||
| 158 | + else: | ||
| 159 | + return (x, y) | ||
| 160 | + | ||
| 161 | + return (x/porcent,y/porcent) | ||
| 105 | 162 | ||
| 106 | - return x | ||
| 107 | 163 | ||
| 108 | 164 | ||
| 109 | def BytesConvert(bytes): | 165 | def BytesConvert(bytes): |
| @@ -155,6 +211,10 @@ def GetWindowsInformation(): | @@ -155,6 +211,10 @@ def GetWindowsInformation(): | ||
| 155 | processor_clock, total_physical_memory, | 211 | processor_clock, total_physical_memory, |
| 156 | available_physical_memory) | 212 | available_physical_memory) |
| 157 | 213 | ||
| 214 | +def GetDarwinInformation(): | ||
| 215 | + memory = 2.0 | ||
| 216 | + return (memory) | ||
| 217 | + | ||
| 158 | 218 | ||
| 159 | def GetLinuxInformation(): | 219 | def GetLinuxInformation(): |
| 160 | 220 | ||
| @@ -169,8 +229,7 @@ def GetLinuxInformation(): | @@ -169,8 +229,7 @@ def GetLinuxInformation(): | ||
| 169 | 229 | ||
| 170 | 230 | ||
| 171 | #processor_clock = float(re.findall('[0-9]+', processor_clock)[0]) | 231 | #processor_clock = float(re.findall('[0-9]+', processor_clock)[0]) |
| 172 | - print architecture | ||
| 173 | - print processor_clock | 232 | + return (architecture, processor_clock, 2.0) |
| 174 | 233 | ||
| 175 | 234 | ||
| 176 | def LinuxCommand(command): | 235 | def LinuxCommand(command): |