On Friday, July 15, 2022 at 11:08:55 AM UTC+8, avi.e...@gmail.com wrote: > I guess Dan, that he may not be seeing what he is working on as a list of > lists of lists with each terminal sublist being of cardinality 4. Maybe > Zhao could look up what methods a list object has that allow you to place > additional items, such as a list of 4 numbers, at the beginning or end or in > middle and select a method that does what he wants. > > But I have to ask where exactly he wants to place this: "[0, 0, 0, 1]"
Yes. This must be appended to each of the subsists to construct an affine transformation matrix, as described here [1-3]. [1] https://www.cryst.ehu.es/cgi-bin/cryst/programs/nph-doc-trmat [2] https://www.gap-system.org/Manuals/pkg/crystcat/htm/CHAP001.htm#SECT002 [3] https://www.gap-system.org/Manuals/pkg/cryst/htm/CHAP002.htm > Unfortunately, we got no before and after picture, just after. I will > explain what that means at the end but for now, I am making believe what you > show is the before and see what that would mean. > > The list seems to be a representation for a matrix that is 8 by 4 by 4. > Where do you place just the foursome above just once without breaking the > matrix? I mean you can extend it at the bottom by adding four of the above > as in > [ [0, 0, 0, 1], > [0, 0, 0, 1], > [0, 0, 0, 1], > [0, 0, 0, 1] ] > > Or you can take each internal four partner like the first one: > [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0,1, 0], [0, 0, 0, 1]] > And extend each one at the right end by adding a fifth: > > [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0,1, 0], [0, 0, 0, 1], [0, 0, 0, 1]] > > I can think of other transformations albeit I have no idea why this is being > done and what makes sense. > > So first he needs to be clear on where and what he is adding and then think > of a method. > > And BTW, this problem may also be looked at under a transformation. If > allowed to use some modules, it might make sense to feed the data structure > into something that returns a 3-D matrix directly and then use methods that > allow you to tack on parts of other matrices of various dimensions including > one. You can then flip it back into nested list format, if you wish. > > OK, as mentioned earlier, if this is the AFTER then I have to look and see > if it is obvious where the "[0, 0, 0, 1]" was placed to make this: > [[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0,1, 0], [0, 0, 0, 1]], > [[-1, 0, 0, 1], [0,-1, 0, 1/2], [0, 0, 1, 1/2], [0, 0, 0, 1]], > [[-1, 0, 0, 1/2], [0, 1, 0, 1/2], [0, 0,-1, 1], [0, 0, 0, 1]], > [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]], > [[0, 1, 0, 3/4], [1, 0, 0, 1/4], [0, 0, -1, 3/4], [0, 0, 0, 1]], > [[-1, 0, 0, 1/4], [0, -1, 0, 1/4], [0, 0, -1, 1/4], [0, 0, 0, 1]], > [[1, 0, 0, 0], [0, 1, 0, 1/2], [0, 0, 1, 1/2], [0, 0, 0, 1 ]], > [[1, 0, 0, 1/2], [0, 1, 0, 0], [0, 0, 1, 1/2], [0, 0, 0, 1]]] > It looks like you are adding not once copy but eight copies with one each at > the end of the lists within the main list. > > That makes this easy enough so think about what it means to deal with lists > and NOT matrices. > > Your top list contains what I will call an a,b,c,d,e,f,g,h so if you wrote > code like > > Mylist = [ "a", "b", ..., "g", "h"] > > Then you can use a loop to iterate over those or perhaps a construct like > this: > > [ item for item in Mylist ] > > Wil gather them together and place them back in a list, which is useless but > it could be something applied to item like changing to upper case. In your > case, each item will be something like this: > > [[1, 0, 0, 0], [0, 1, 0, 0], [0, 0,1, 0]] > > And you want to extend it by attaching this [0, 0, 0, 1] > > So how do you attach something to a list? Whatever that method is, call it > append and look it up and consider a line of code like: > > [ item.append(something) for item in Mylist ] > > If done right, the above list comprehension loops over one dimension of your > list version of a matrix and adds [0, 0, 0, 1] to the end and then > eventually put the a/b/d/..h components back together to look like what I > THINK you are asking. > > You can make some of the other possible changes using other tricks and > gimmicks like a nested comprehension but at some point, if you work well > with matrices, you may be better off converting your nested list into a > numpy matrix and make your addition another matrix and then use > numpy.concatenate, numpy.vstack and numpy.hstack with proper care with > multiple dimensions to specify what axis they will combine on. > > But doing the full (home)work for you is ... Thank you for your analysis and comments. Best, Zhao > -----Original Message----- > From: Python-list <python-list-bounces+avi.e.gross=gmai...@python.org> On > Behalf Of Dan Stromberg > Sent: Thursday, July 14, 2022 10:07 PM > To: hongy...@gmail.com <hongy...@gmail.com> > Cc: Python List <pytho...@python.org> > Subject: Re: Extract the space group generators from Bilbao Crystallographic > Server. > > It's good to include what you want to see as output, but it's important to > also include what you have as input. > > It's also good to include what you've coded so far. It's considered good > etiquette to give it a try yourself before asking the list. > > On Thu, Jul 14, 2022 at 1:03 PM hongy...@gmail.com <hongy...@gmail.com> > wrote: > > I'm trying to extract the matrix data of "ITA-Setting F d -3 m [origin 1]" > > listed here [1], and then building an augmented matrix for each of > > them by adding the last row as "[0, 0, 0, 1]". In short, the following > > form is the ultimate-desired result: > > > > [[[1, 0, 0, 0], [0, 1, 0, 0], [0, 0,1, 0], [0, 0, 0, 1]], > > [[-1, 0, 0, 1], [0,-1, 0, 1/2], [0, 0, 1, 1/2], [0, 0, 0, 1]], > > [[-1, 0, 0, 1/2], [0, 1, 0, 1/2], [0, 0,-1, 1], [0, 0, 0, 1]], > > [[0, 0, 1, 0], [1, 0, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1]], > > [[0, 1, 0, 3/4], [1, 0, 0, 1/4], [0, 0, -1, 3/4], [0, 0, 0, 1]], > > [[-1, 0, 0, 1/4], [0, -1, 0, 1/4], [0, 0, -1, 1/4], [0, 0, 0, 1]], > > [[1, 0, 0, 0], [0, 1, 0, 1/2], [0, 0, 1, 1/2], [0, 0, 0, 1 ]], > > [[1, 0, 0, 1/2], [0, 1, 0, 0], [0, 0, 1, 1/2], [0, 0, 0, 1]]] > > > > Any hints/tips/tricks for achieving this aim will be appreciated. > > > > [1] > > https://www.cryst.ehu.es/cgi-bin/cryst/programs//nph-trgen?gnum=227&wh > > at=gen&trmat=a-1/8,b-1/8,c-1/8&unconv=F%20d%20-3%20m%20:1&from=ita > > > > Regards, > > Zhao > > -- > > https://mail.python.org/mailman/listinfo/python-list > > > -- > https://mail.python.org/mailman/listinfo/python-list -- https://mail.python.org/mailman/listinfo/python-list