I feel as though it would be best to just rename the function to
centres_ppRoll

On Thu, Sep 11, 2025, 14:57 Leo Mada via R-package-devel <
r-package-devel@r-project.org> wrote:

> Dear All,
>
> I have some problems and some questions regarding how to pass some checks
> (run on my computer - new version not yet submitted).
>
> There are 2 important notes:
>
> 1. Note 1:
> checking S3 generic/method consistency ... NOTE
>   Apparent methods for exported generics not registered:
>     centres.ppRoll
>
> 2. Note 2:
> checking Rd \usage sections ... NOTE
>   S3 methods shown with full name in Rd file 'centres.ppRoll.Rd':
>     'centres.ppRoll'
>
> The current code is on GitHub:
> https://github.com/discoleo/Rpdb
>
> But let me first explain the reason and reasoning.
>
> There are 2 generic functions: centres and centres.ppRoll, each with 3
> methods for pdb objects, atoms and coords (default).
>
> Generic function centres:
> The 1st generic function, centres, computes the centres of a molecule and
> has methods for 3 objects: pdb molecule, atoms and xyz-coordinates
> (default). It acts on an object of type coords, while the objects atoms and
> pdb include such a coords-object in their structure.
>
> I would like to write various "specialised" versions:
> - they still compute the centre, as it's the simplest summary possible for
> 3D objects;
> - however, there are many types of molecules: proteins, nucleic acids,
> other types of molecules; and each may benefit from more "specialised"
> methods;
> Note: all molecules are still coded as a pdb object. It's the user who
> selects which method is most appropriate for a specific situation/molecule.
>
> E.g. proteins consist of long linear chains. One such variant would be a
> "rolling mean": it makes sense for polypeptide chains and nucleic acids,
> but little (or no) sense for other molecules.
>
> I wrote therefore a generic function centres.ppRoll with 3 methods for the
> 3 base-objects.
>
> I would like to reuse the centres-skeleton for the name: users can then
> easily check which methods are available to compute centres:
> methods(centres)
> # [1] centres.atoms          centres.coords         centres.pdb
> # centres.ppRoll
> # [5] centres.ppRoll.atoms   centres.ppRoll.default centres.ppRoll.pdb
>
> I would like to avoid having hundreds of function names which no-one
> remembers and which would be cumbersome to search for. Each method would be
> useful only in particular situations and users are likely to forget the
> exact names between uses.
>
> I get the above 2 notes with this approach:
> - I did not register centres.ppRoll as an S3 method to avoid the 2nd note;
> - I get the 2nd note anyway (and it gets silently registered, which may be
> necessary for the methods-search to work);
>
> Another pseudo-solution would be to add a methods argument. This solution
> is misused at times; unfortunately, it is really ugly here because some of
> the methods may have particular arguments (e.g. window-size for the
> roll-method).
>
> Ultimately, I may end up with 50 or 100 arguments in the function, which I
> also need to replicate to all the 3 methods (pdb, atoms, default/coords).
>
> I really don't like this pseudo-solution and prefer one based on the 1st
> approach.
>
> I did not count how many function name variants are in the > 20,000
> packages on CRAN. But I think that a more structured approach would be
> beneficial to everyone.
>
> Thanks in advance for any support,
>
> Leonard
>
> ##########
>
> ### Note
> - Proteins have a backbone and the amino-acids also have side chains;
> - It is useful in certain situations to have additional types of centres
> computed;
> - The initial developer of Rpdb used it mainly for other types of
> molecules (not proteins);
>
> The code actually functions:
>
> # pdb2z81.ent can be downloaded from the Protein Data Bank;
> setwd(...)
> x = read.pdb("pdb2z81.ent")
> # Number of models:  0
> # Warning message:
> # In read.pdb("pdb2z81.ent") : The pdb contains a Caveat record!
> tmp = centres.ppRoll(x)
> visualize(x, type="p", pbc.box = FALSE)
> # Draw a peptide-"Skeleton"
> lines3d(tmp, lwd = 5, col = "red")
>
> # A new version of the pdb-format is also out,
> # but that's a horror-story in itself.
>
>
>         [[alternative HTML version deleted]]
>
> ______________________________________________
> R-package-devel@r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-package-devel
>

        [[alternative HTML version deleted]]

______________________________________________
R-package-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-package-devel

Reply via email to