thanks Daniel. Ben please let me know which version you are using :) On Aug 2, 2010, at 1:01 PM, Daniel Russel wrote:
> Ben is currently using IMP 1.0 (as far as I know). Is the example > likely to work on that? If so, Ben, you can just wait until tomorrow > morning and then get it from the nightly build docs online. > > On Aug 2, 2010, at 12:58 PM, Keren Lasker wrote: > >> Ben/Daniel - >> I agree that initializing a map from a bounding-box makes sense. >> Please see revision 1644 that now contains an example on how to do >> that >> em/examples/generate_density_map_of_fixed_dimension.py >> >> I have added a function that generates a header from a bounding box >> and show how to use it in the example. >> >> Keren. >> On Aug 2, 2010, at 7:57 AM, Daniel Russel wrote: >> >>> On Aug 1, 2010, at 10:07 PM, Keren Lasker wrote: >>> >>>> hi Ben - >>>> You can initiate a SampledDensityMap from a DensityHeader, which >>>> you can set to any dimension you want. >>>> Does that make sense ? >>> What fields of the density header must be set in order for >>> construction to work right? >>> set_number_of_voxels() >>> set_resolution() >>> set_{x,y,z}origin() >>> Objectpixelsize_ (there doesn't seem to be a set function, right?) >>> Anything else? >>> >>> >>>> Our Ben - I am still for some reason not getting these messages, >>>> only after forwarding from Daniel :) >>> This message was old, I just revived it. >>> >>> >>>> On Aug 1, 2010, at 12:31 PM, Daniel Russel wrote: >>>> >>>>> Keren? I have comments below. >>>>> >>>>> On Jul 22, 2010, at 6:51 AM, Benjamin SCHWARZ wrote: >>>>> >>>>>> Hi list, >>>>>> >>>>>> I could not find how to Generate a density map from a >>>>>> structure with a *fixed* dimension : >>>>>> When using IMP.em.SampledDensityMap(ps,resolution,apix) with a >>>>>> fixed size for apix, the grid size depends on the resolution. I >>>>>> would like to write a function that would allow me to generate >>>>>> maps with the same number of vertices (and the same space >>>>>> coverage) for different resolutions. I thus tried : >>>>>> >>>>>> def pdbFile2dmap >>>>>> (pdbStream,densityFile,resolution,apix,sel,bboxCoverage=1.2): >>>>>> ''' >>>>>> pdbStream : where to read the structure >>>>>> densityFile : name of the file where to drop the >>>>>> density map >>>>>> resolution : resolution of the density map >>>>>> apix : voxel size >>>>>> sel : selector for reading structure >>>>>> bboxCoverage : approximate bbox coverage of the density >>>>>> map >>>>>> ''' >>>>>> m= IMP.Model() >>>>>> # read protein >>>>>> mh = IMP.atom.read_pdb(pdbStream,m,sel) >>>>>> # add radius info to each atom >>>>>> IMP.atom.add_radii(mh) >>>>>> # compute bbox, and map size in voxels >>>>>> bbox = IMP.atom.get_bounding_box(mh) >>>>>> diag = bbox.get_corner(0) - bbox.get_corner(1) >>>>>> nx = int(bboxCoverage * diag[0] / apix) >>>>>> ny = int(bboxCoverage * diag[1] / apix) >>>>>> nz = int(bboxCoverage * diag[2] / apix) >>>>>> # compute origin >>>>>> origin = bbox.get_corner(0) + (1-bboxCoverage)/2 * >>>>>> diag >>>>>> >>>>>> dmap = IMP.em.SampledDensityMap() >>>>>> # dmap.CreateVoidMap(nx,ny,nz) >>>>>> ps = IMP.Particles(IMP.core.get_leaves(mh)) >>>>>> dmap.set_particles(ps) >>>>>> dmap.set_origin(origin) >>>>>> dmap.get_header_writable().set_number_of_voxels(nx,ny,nz) >>>>>> dmap.get_header_writable().set_resolution(resolution) >>>>>> dmap.update_voxel_size(apix) >>>>>> dmap.resample() >>>>>> dmap.calcRMS() # computes statistic stuff about the >>>>>> map and insert it in the header >>>>>> print dmap.get_header().show(),"\n" >>>>>> IMP.em.write_map(dmap,densityFile,IMP.em.MRCReaderWriter()) >>>>>> >>>>>> that resulted in : >>>>>> >>>>>> python(10802) malloc: *** mmap(size=18446744073709314048) >>>>>> failed (error code=12) >>>>>> *** error: can't allocate region >>>>>> *** set a breakpoint in malloc_error_break to debug >>>>>> Traceback (most recent call last): >>>>>> File "./pdb2density.py", line 181, in <module> >>>>>> pdbFile2dmap(pdbStream,densityFile,resolution,apix,sel,1.2) >>>>>> File "./pdb2density.py", line 75, in pdbFile2dmap >>>>>> dmap.update_voxel_size(apix) >>>>>> File "/usr/local/lib/python2.6/site-packages/IMP/em/ >>>>>> __init__.py", line 428, in update_voxel_size >>>>>> def update_voxel_size(self, *args): return >>>>>> _IMP_em.DensityMap_update_voxel_size(self, *args) >>>>>> MemoryError: std::bad_alloc >>>>>> >>>>>> >>>>>> Can you tell me if my approach is OK, and how to solve my >>>>>> allocation problem ? >>>>> There DenistyMap/DensityHeader is still a bit finicky (that is, >>>>> there are protocols which have to be followed, and, even worse, >>>>> they don't tend to be documented). Keren is working on a cleaner >>>>> version. My guess it the problem is due to not setting the >>>>> "upper right" value or the length of the edge of each voxel. I >>>>> don't see the function to do that offhand. Keren? >>>>> >>>>>> >>>>>> I would also like to know if there are easy means in IMP to >>>>>> 1.) Strip a density map : out of an existing map, create a new >>>>>> map or restrict the existing one, so as to conserve only a >>>>>> central subset of voxels >>>>> There is get_transformed_into() which could be used. This may be >>>>> a post 1.0 addition. >>>>> >>>>>> 2.) Re-sample a map : Conserve the density map "box" size, and >>>>>> change the number of voxels that cover it >>>>> There is get_resampled(). Also may be a post 1.0 addition. >>>>> >>>>>> >>>>>> --Ben >>>>>> _______________________________________________ >>>>>> IMP-users mailing list >>>>>> IMP-users@salilab.org >>>>>> https://salilab.org/mailman/listinfo/imp-users >>>>> >>>>> _______________________________________________ >>>>> IMP-users mailing list >>>>> IMP-users@salilab.org >>>>> https://salilab.org/mailman/listinfo/imp-users >>>> >>>> _______________________________________________ >>>> IMP-users mailing list >>>> IMP-users@salilab.org >>>> https://salilab.org/mailman/listinfo/imp-users >>> >>> _______________________________________________ >>> IMP-users mailing list >>> IMP-users@salilab.org >>> https://salilab.org/mailman/listinfo/imp-users >> >> _______________________________________________ >> IMP-users mailing list >> IMP-users@salilab.org >> https://salilab.org/mailman/listinfo/imp-users > > _______________________________________________ > IMP-users mailing list > IMP-users@salilab.org > https://salilab.org/mailman/listinfo/imp-users