Miles Mathis' Charge Field
Would you like to react to this message? Create an account in a few clicks or log in to continue.

Miles Periodic Table with Standard Periodic Table reference

5 posters

Page 4 of 11 Previous  1, 2, 3, 4, 5 ... 9, 10, 11  Next

Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Fri Jul 22, 2022 4:51 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Beryll11

All atoms are reconfigured to build the new slot configurations as read from the latest data file changes.  

Thanks Cr6, at the moment, between you and me, my objectivity is shot and I’m delirious.

Implementing slot particle configurations based on proton spin directions (R or L) and electron at proton (T or B) pole as suggested in Diatomic Hydrogen makes a whole lot more sense then building slots from alphas and the odd proton. Easier to read and make changes to the electron, neutron and proton particle positions directly in the data file, also an improvement. And Neutrons! There are plenty of neutrons and plenty of positions they might occupy. Sorry it took me so long, but incremental improvements are better than none.      

Given some of the possible new alternatives I’ve made a few choices.  

Beryllium, Be.  Above. The two central protons, neutrons and electrons form a TLBR alpha, a two proton spin directional slot group. The top two electrons, protons and neutrons spin L, while the bottom 3 neutrons, 2 protons and 2 electrons spin R. Be’s slot1 datafile neutron configuration is:
Neutrons 5 N1 0 N2 2 N3 1 N4 2 N5 0 N6 0 Electrons A SlotOrien Z SlotSpin A.
A little confusing, the slot is built +/-z starting with the center alpha – the second and third protons from the top. Zero neutrons are added to the first L proton and two neutrons are added to the second R proton. L Proton 3 is at the top, and R proton 4 is at the bottom. The neutrons are added at the same time and in the same order. Compare to Miles’ Be nucleus I posted on 24 June. As I recall, Miles didn’t indicate whether an alpha is included in Be or not. The same neutron configuration can be included in a single directional proton spin group, R or L, but then all electrons would need to be a single electron configuration, T or B, and not both T and B as shown here.

Lead, Pb. Below. Found/corrected a slot11 x position error. Look closely and you’ll see a gap between slot1’s two central protons. The electrons are present but on the opposite proton poles - in an alpha T B configuration – minus the neutrons(!). While it makes sense to me to remove any neutrons from the direct +/- x, y, side channels, its just a guess on my part and I’m often wrong. Another choice, all Pb proton stacks containing six protons have five intervals which contain six neutrons. One of the five intervals has two neutrons. I did that because I didn’t like hanging a neutron off of a slot’s end, preferring to leave both slot ends as protons (not to mention the electrons). In other elements with large stacks I left those neutrons orbiting outside the outermost protons and chose not to include neutron doubling. Likewise, sometimes I included single neutrons with single protons, as with Hydrogen, but generally not as with Pb’s hook position protons. More alternatives later.
   
Ok, the display neutrons checkbox is again working properly.

Next, code review – again – and cleanup.

No pythreejs rendered output #381? Another week with No problem.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Lead8210
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Fri Jul 22, 2022 9:45 pm

LTAM.....dude you are the man! Thanks for pushing the modeling ahead.

With a rules engine and big data at this level it might be possible to really make "bonds" happen for molecules. I may need to database this again.

Chromium6

Posts : 712
Join date : 2019-11-29

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Fri Jul 29, 2022 3:57 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Kr3610
Krypton, now described by a new slot layout diagram, 'SL 1.TBA 5.RLA'. Unfortunately, neutrons are not included.

Last week I’d implemented the 2-directional slot1 TLBR, as well as distributing all the four possible single-spin groups (created from multiples of TR’s, TL’s, BR’s and BL’s) throughout all the remaining slots. Since then, I’ve restored all the alphas in slot1, reserving the right to mess with them again in the future. Yesterday I implemented the single spin directional slots with TB electron positions: TLBL (in slot2) and TRBR (in slot3). I still need to add a TRBL.

'SL 1.TBA 5.RLA'. In the meantime I made a second SL diagram to include the new data. Occupied slots in the center SL contain 5 digits: 1.TBA. Electron position at the proton's T, B or A pole. Note that A can only indicate TB since a BT electron configuration is not allowed. 2. The slot number (1-19), as a single digit, 1-J. 3. The slot's proton emission plane orientation. 4. The color-coded number of protons in that slot. 5.RLA. The slot's proton groups’ spin direction. An A in the fifth position indicates a top of the slot proton spin of L or R and the bottom of the proton slot spin of R or L, I’ll probably need a new fifth position single digit besides A (i.e. applicable to slot1’s fifth digit) to differentiate between LR or RL.

Again, slot1 is a TLBR, slot2 is a TLBL and slot3 is a TRBR. All other slots are TRTR…, TLTL..., BRBR..., or BLBL…. I’m not at all sure how to assign specific configuration types to specific slots. All in all, including the slots’ electron position and proton spin data may be a bit more complicated, I’d say the resulting model is definitely improved.

Cr6 wrote. With a rules engine and big data at this level it might be possible to really make "bonds" happen for molecules. I may need to database this again.
I did a couple of searches and read about “rules engine and big data“. I agree, we now have a few specific rules for bonding proton groups within a single slot’s stack. Atomic bonding may be slightly different – between stacks(?). Clear or not, rules must first be identified. Bear in mind that a rules engine can be extremely complicated and even counterproductive in the long run, whereas an if/then/else logic structure or table might suffice. At least for starters. For example, here’s the current buildProStackM(a,j) function. Note the if/then/else logic structure beginning halfway through, used to build each new type slot configuration.    

Code:

def buildProStackM(a,j):
    """
    Parameters: a - total number of slot protons. j - given slot #.
    
    buildProStackM(a,j) is an attempt to follow Miles Mathis'
    paper,'Diatomic Hydrogen' (DH), which includes electron-proton
    (e-p) to e-p charge bonding summarized in rules 1, 2, and 3:
    Rule 1. Two protons, each with any spin direction (L or R) can
    bond when they share a T B electron position configuration.
    Rule 2. T T or B B electron position configurations will be valid
    only if both protons have the same (L or R) spin direction.
    Rule 3. No combination of B T electrons are valid, two electrons
    between two protons prevent bonding.
    """
    
    if coloredEmissions.value == True:
        for k in range(6):
            if a == k + 1 :
                emissionmaterial = emissionMaterialList[k]
    else:
        emissionmaterial = emissionMaterialList[6]              

    """
    p2p3 = 2*p2p3Dist*pRadius, distance added for each additional e-p.
    The six sets of equidistant proton positions for a slot with 1-6 protons.
    The proton (groups) are added beginning at the slot center. 5,3,1,2,4,6.
    """
    if a == 1 : pPositions = [0]
    if a == 2 : pPositions = [p2p3/2,-p2p3/2]
    if a == 3 : pPositions = [0,-p2p3, p2p3]
    if a == 4 : pPositions = [p2p3/2,-p2p3/2,3*p2p3/2,-3*p2p3/2]
    if a == 5 : pPositions = [0,-p2p3,p2p3,-2*p2p3,2*p2p3]        
    if a == 6 : pPositions = [p2p3/2,-p2p3/2,3*p2p3/2,-3*p2p3/2,5*p2p3/2,-5*p2p3/2]  
    
    def conesPlusPlane(protonMi,emission1,emission2,position):
        emission1.add(Mesh(emissionGeometry, emissionmaterial))
        #emission1.position = [0,0,coneHeight/2]
        emission1.position = [0,0,position]
        emission1.rotateX(-piG/2)
        protonMi.add(emission1)
        emission2.add(Mesh(emissionGeometry, emissionmaterial))
        #emission2.position = [0,0,-coneHeight/2]
        emission2.position = [0,0,-position]
        emission2.rotateX(piG/2)  
        protonMi.add(emission2)            
        protonMi.add(Mesh(emissionGeometryP, emissionmaterial))      
        return

    def addElectron(protonMi,electronMi,position):
        electronMi.add(Mesh(electronGeometry, electronMaterial))
        electronMi.position = [0,-n1n2/10,position]
        electronMi.rotateZ(random()*2*piG)
        protonMi.add(electronMi)    
        return
    
    def singleNeutron(protonMi,neutron,position):
        neutron.add(Mesh(neutronGeometry, neutronMaterial))
        neutron.position = [0,-0.75*n1n2/2,position]  
        neutron.rotateZ(random()*2*piG)
        if displayNeutrons is True :
            protonMi.add(neutron)
        return  

    def pairOfNeutrons(protonMi,neutron1,neutron2,position):
        neutron1.add(Mesh(neutronGeometry, neutronMaterial))
        neutron1.position = [0,-0.75*n1n2/2,0]
        neutron2.add(Mesh(neutronGeometry, neutronMaterial))
        neutron2.position = [0,0.75*n1n2/2,0]
        neutronPair.add(neutron1)
        neutronPair.add(neutron2)
        neutronPair.rotateZ(random()*2*piG)
        neutronPair.position = [0,0,position]
        if displayNeutrons is True :
            protonMi.add(neutronPair)        
        return

    num = 0 # Increments the occupied slot's 1-6 proton groups.  
    while num < a:
        protonMi = Group()  
        protonMi.add(Mesh(protonGeometry, protonMaterial))
        if emissionType.value == 'plane':
            protonMi.add(Mesh(emissionGeometry, emissionmaterial))
        if emissionType.value == 'cones':
            emission1 = Object3D()
            emission2 = Object3D()
            conesPlusPlane(protonMi,emission1,emission2,coneHeight/2)

        # Electron and neutron additions to proton spin groups.
        electronMi = Object3D()        
        neutronMi = Object3D()
        neutronNi = Object3D()
        neutronPair = Group()

        # Building the various T,B,A, and R,L,A slot configurations.
        intColumn = 8+num  # Pointing to the N1-N6 data locations.
        intValue = slotsetA_df.iloc[j,intColumn]
        if slotsetA_df.loc[j+1,('SlotSpin')] == "R" or "L" :
            if slotsetA_df.loc[j+1,('Electrons')] == "T" :
                addElectron(protonMi,electronMi,p1e1)            
                if intValue == 1 :                  
                    singleNeutron(protonMi,neutronMi,-p2p3/2)              
                elif intValue == 2 :  
                    pairOfNeutrons(protonMi,neutronMi,neutronNi,-p2p3/2)
            if slotsetA_df.loc[j+1,('Electrons')] == "B" :
                addElectron(protonMi,electronMi,-p1e1)
                if intValue == 1 :  
                    singleNeutron(protonMi,neutronMi,p2p3/2)
                elif intValue == 2 :
                    pairOfNeutrons(protonMi,neutronMi,neutronNi,p2p3/2)
            if slotsetA_df.loc[j+1,('Electrons')] == "A" : # 'SlotSpin' = R or L
                if num%2 != 0:
                    addElectron(protonMi,electronMi,-p1e1)
                    if intValue == 1 :                    
                        singleNeutron(protonMi,neutronMi,p2p3/2)                    
                    elif intValue == 2 :
                        pairOfNeutrons(protonMi,neutronMi,neutronNi,p2p3/2)                    
                elif num%2 == 0:
                    addElectron(protonMi,electronMi,p1e1)
                    if intValue == 1 :                    
                        singleNeutron(protonMi,neutronMi,-p2p3/2)                    
                    elif intValue == 2 :
                        pairOfNeutrons(protonMi,neutronMi,neutronNi,-p2p3/2)  
        if slotsetA_df.loc[j+1,('SlotSpin')] == "A" and slotsetA_df.loc[j+1,('Electrons')] == "A":
            if num == 0 :
                addElectron(protonMi,electronMi,p1e1)
                if intValue == 1 :                  
                    singleNeutron(protonMi,neutronMi,p2p3/2)                
            if num == 1 :
                if intValue == 0 :  
                    addElectron(protonMi,electronMi,-p1e1)
                if intValue == 1 :
                    addElectron(protonMi,electronMi,p1e1)
                    singleNeutron(protonMi,neutronMi,-p2p3/2)  
                if intValue == 2 :
                    addElectron(protonMi,electronMi,p1e1)
                    pairOfNeutrons(protonMi,neutronMi,neutronNi,-p2p3/2)                  
                    protonMi.rotateX(piG)
                    protonMi.rotateZ(random()*2*piG)
            if num > 1 and num%2 == 0:
                addElectron(protonMi,electronMi,p1e1)                
                if intValue == 1 :                    
                    singleNeutron(protonMi,neutronMi,-p2p3/2)
                elif intValue == 2 :
                    pairOfNeutrons(protonMi,neutronMi,neutronNi,-p2p3/2)
            if num > 1 and num%2 != 0:          
                if intValue == 1 :                    
                    addElectron(protonMi,electronMi,-p1e1)
                    singleNeutron(protonMi,neutronMi,p2p3/2)
                elif intValue == 2 :
                    addElectron(protonMi,electronMi,-p1e1)
                    pairOfNeutrons(protonMi,neutronMi,neutronNi,p2p3/2)
      
        protonMi.rotateZ(random()*2*piG)
        protonMi.position = [0,0,pPositions[num]]
        
        # Slot spin assignments
        if slotsetA_df.loc[j+1,('SlotSpin')] == "R":                
            stacksA[j].add(protonMi)
        elif slotsetA_df.loc[j+1,('SlotSpin')] == "L" :
            stacksB[j].add(protonMi)
        elif slotsetA_df.loc[j+1,('SlotSpin')] == "A" :        
            # Double spin slot spin assignments.
            if num%2 != 0:            
                stacksA[j].add(protonMi)
            else:
                stacksB[j].add(protonMi)              
        num += 1
    return

I’m extremely curious how you might “database this again”?

Miles Periodic Table with Standard Periodic Table reference - Page 5 Pt78c10
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Aug 04, 2022 6:13 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Thoriu10

Not much code progress to report this week. Added what I believe is the final (e-p)(e-p) proton stack configuration for an alpha bond, TRBL. Doing it last made it the easiest, in about a minute or so. The details follow. Near the end of the buildProStackM(a,j) function code I posted last time there’s “elif slotsetS … == ‘A’” which tests whether that slot is supposed to be the alpha TLBR, and if true, assigns the top proton L spin and bottom proton R spin. stacksA[] are R spinners and stacksB[] are L spinners. I copied and added the elif code just above num += 1, changing ‘A’ to ‘B’, testing for TRBL new ‘SlotSpin’ code designation B, (R,L,A,B), and if true, assigns the +z proton an R spin, and the -z proton an L spin.

Code:
        elif slotsetA_df.loc[j+1,('SlotSpin')] == "B" :        
            # Double spin slot spin assignments.
            if num%2 != 0:            
                stacksB[j].add(protonMi)
            else:
                stacksA[j].add(protonMi)    
         
Then changed the tab name from ‘SL 1.TBA 5.RLA' to ‘SL 1.TBA 5.RLAB'. The name is intended as a brief explanation, I may change it again.

The only other ‘change’ made was to add an as of yet unused control pane dropdown choice between displaying the atom’s main, up-down z-axis charge channel either horizontally or vertically.

Code:
zDisplayOrient = widgets.Dropdown(
   options=['horizontal', 'perspective'],
   value='horizontal',
   description='Z Axis:',
)

I’m sure the alternative z orientation would be appreciated. As you know, from the start I’ve made the z-axis horizontal, since tall atoms fit better sideways in my short and wide display window. I’ve had plenty of practice orienting myself. Whatever the viewpoint is, briefly turning on (and off) the carousel’s (or slot1’s TLBR -z end) R spin. With the z-axis held sideways, and the closest point of the R spinning carousel spinning straight up in front of my nose, then by the right-hand rule, positive Z is towards my left. Positive X is toward my face; and positive Y is straight up.  

There seems to be odd shadows in both the plane and cone emissions. I don’t know where the flip(?) is coming from.

I noticed that the control panel particle distances based on alphas need to be converted to e-p. I’ll soon hop to it.

Most of my week was spent trying to understand the new proton stacks as e-p bond configurations, actually e-p-n bond configurations.

I’d like to figure out whether there are any particular configuration constraints, such as, when assigning configuration types to each of the SlotLayout (SL) diagram’s 19 slots. Making it an e-p based SL diagram. I realize that would be a good enough reason to consider re-databasing things. Am I free to add or subtract neutrons? I’d hope to glean what makes e-p slot stacks bond together at right antgles. I don’t expect any “answers”, but will truthfully say I’ve spent plenty of time thinking about it and will no doubt continue to do so. Theory is generally beyond me. Slow methodical plodding is more my forte. Reviewing and describing things as carefully as I can, … . The usual caveats. Feel free to add.

e-p Types. All atomic protons are accompanied by electrons. The electron-proton pair is designated e-p. All protons can spin left or right (L,R), and the electron may be orbiting the proton’s top or bottom pole (T,B) so a single e-p can be of type: TL, TR, BL, or BR. The presence of the electron over the proton’s top or bottom pole creates a charge field minima outside the proton’s opposite pole. That charge imbalance allows bonding between two e-p’s, as Miles explains in Diatomic Hydrogen (DH). I went and numbered them. Rule 1. Two protons, each with any spin direction (L or R) can bond when they share a T B electron position configuration. Rule 2. T T or B B electron position configurations will be valid only if both protons have the same (L or R) spin direction. Rule 3. No combination of B T electrons are valid, opposing and interfering vortices between electron/positron pairs between adjacent proton poles prevent the protons from bonding. The present discussion and code’s progress is based on the assumption the same bonding rules also apply equally well to (e-p-n)(e-p-n) bonding within proton stacks.

I believe the following are all 8 possible e-p TB RL slot configuration types the program can now create.  Each type may come in any one of five, 2–6, e-p versions.

8 possible (e-p)/(e-p) bond types and each type’s 2-6 (e-p) proton configurations.
a. TLBR, TLTLBR, TLTLBRBR, TLTLTLBRBR, TLTLTLBRBRBR.
b. TRBL, TRTRBL, TRTRB LBL, TRTRTRBLBL TRTRTRBLBLBL.
c. TLBL, TLTLBL, TLTLBLBL, TLTLTLBLBL, TLTLTLBLBLBL.
d. TRBR, TRTRBR, TRTRBRBR, TRTRTRBRBR, TRTRTRBRBRBR.
e. TRTR,  TRTRTR,  TRTRTRTR,  TRTRTRTRTR,  TRTRTRTRTRTR.
f. TLTL,  TLTLTL, TLTLTLTL, TLTLTLTLTL, TLTLTLTLTLTL.
g. BRBR,  BRBRBR,  BRBRBRBR,  BRBRBRBRBR,  BRBRBRBRBRBR.
h. BLBL,  BLBLBL,  BLBLBLBL,  BLBLBLBLBL,  BLBLBLBLBLBL.
A total of 8x5, 40 stacks to choose from. Flip them all upside down and the would be labeled the same. Starting from the center of the slot, the program adds each new odd/even, e-p proton group to the +,-,+,-,+,-  slot stack ends. Randomizing 50/50 e-p additions to either slot ends would add a little variety to that list.

Summary descriptions of the 8 e-p types‘ slot configurations.
a. and b. are two, 2-directional proton spin groups. All other e-p types are one directional proton group spinners.
a. thru d. are the TB electron configurations. The remaining e-p types are either T’s or B’s.
e. and f. are top single direction spinners.
g. and h. are bottom single direction spinners.

Neutrons. I keep saying I’m just following the (e-p)(e-p) bonding rules identified in Miles’ DH paper. True; but this program is also adding neutrons, e-p-n’s instead of e-p’s. A single e-p-n may include a single electron, a single proton, and 0, 1 or 2 neutrons. All the same TL, TR, BL, or BR (e-p) rules apply, with the understanding that the neutron occupies the proton pole opposite the electron. The neutron is occupying/orbiting the charge minima near the proton pole caused by the electron. The neutron circles the proton’s direct pole-to-pole charge channel far enough away so as not to prevent the addition of another e-p-n proton group along the proton pole to proton pole bond position ine. I recall Miles describing offset neutrons between vertically aligned, horizontally emitting protons as a sort of gap stabilizer which helps keep the protons separated and aligned in a stack. I couldn’t quite see how photon collisions did that, till the cone emissions make it somewhat clearer to me. Neutrons can channel 0.68 the charge a proton can (1.00). Being offset, the neutrons avoid the full strength 6 protons charge channel. Those neutrons must block some charge, so maybe these offset neutrons, circling the direct proton pole channels add to the proton stack’s charge minima and increase a stack’s bond strength.

At the same time, I assume that additional neutrons or electrons are free to come and go without disturbing the SL structure, or changing any proton stack spins or positions. Of course there’s probably an order to neutron additions and removals, energy level, etc.

The SL structure. In this e-p-n context, I suppose the SL requires a brief re-introduction. An atom’s main +/- z charge channel aligns to the main upward charge flow from the Earth, as well as downward anticharge from the Sun. The +/- x and +/- y atomic charge channels divert some of the vertical charge and anticharge received into the orthogonal, horizontal z plane in which slots along the +/- x and +/- y charge channel arms spin as a single group around slot 1, the Carousel. Hook slot positions: 16,17,18, and 19, are joined to the main up/down column at slots, 2 and 3.  

Alternating in-line and orthogonal proton stacks. The SL structure is comprised of alternating proton stacks, either aligned or perpendicular (crossed or ortho) with the main atomic charge channel axis the proton stack is centered on. The main vertical z-axis channel slots (from + to - z) are (14,4,2,1,3,5,15), with ortho slots: (14,2,3,15) and in-line slots: (4,1,5). The front/back x-axis channel slots are (11,8,1,9,13), of which (8,9) are in-line, and (11,1,13) are ortho. The left/right y-axis channel slots are (10,6,1,7,12), with ortho slots (10,1,12) and in-line slots (6,7).Slot1 is aligned with z but orthogonal to both x and y charge channel axii. Slots 16-19 are ortho to slots 2-3.  The ortho slots outnumber the in-line slots.

Why are most of the slots’ pole-to-pole charge channels perpendicular to earth’s charge channels? According to my charge field understanding, a proton high up in earth’s atmosphere will, over some relatively short amount of time, align its poles to the earth, and will usually become an R spinner - over the N.Hemisphere. Furthermore, the proton pole facing the earth receives more direct charge current, including more electrons. That makes the earth aligned e-p’s mostly BR types, or BL over the S Hemisphere. Helium, the alpha, is usually depicted as a two e-p vertical stack with horizontal emissions. Slot1’s proton stack alignment to the earth’s charge makes sense, I would expect all individual proton stacks of 2-6 protons within the atmosphere will align vertically to the earth below. L spinners at the +z top of the stack or R spinners at the -z bottom of the stack. I would guess that TLBR alpha type bond in the middle of slot1 would allow charge to recycle most efficiently.  

Individual protons may of course be positioned perpendicularly, with earth in their equatorial emission planes. I suppose such a proton may remain in that position indefinitely, or until a few energetic collisions knock if slightly askew, and the proton emissions no longer point directly to the earth. Earth’s emissions will then begin to quickly push the proton into the pole-toward-earth, horizon emission orientation. Cleary, there must be a bond between an aligned slot1, and an adjacent perpendicular slot2 of sufficient strength to prevent both slot2 from turning out of the perpendicular position or slot1 from turning away from its in-line axis z orientation. Both Carbon (6) and Oxygen (Cool have vertical slot1’s containing 4 and 6 protons, and single perpendicular protons in slots 2 and 3. Up in the atmosphere, I don’t believe the earth could turn C or O’s slot 2 and 3 protons. The perpendicular slots redirect proton emitted charge to the x and y planes.

That's all I got!
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Aug 11, 2022 3:21 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Guipan10
The current AtomBuilder3 graphical user interface control panel.

Things are moving along albeit slowly.  

Worked on the gui control panel. As I'd intended last week, the graphical user interface control panel has been cleaned-up and updated to the latest e-p-n data. The global variables and the calculations of corresponding atomic distances are now cleaner and better described in the “Build Atom” cell.  

Added the horizontal/vertical z-axis orientation drop-down choice at the bottom of the gui control panel image above.

Added three new control variables: o-slots gap, epn gap and N offset. The five variable descriptions are as follows:  
1. EmRadius. 2-8. The model’s proton emissions display size, or the radius of either the plane circle emission or open circular end of the cone emissions. Of course emissions go on forever, the radius is arbitrary. A larger emission setting shows how the emissions are oriented with respect to adjacent or nearby atomic particles.  
2. o-slots gap. 2-3. The separation distance between adjacent orthogonal proton stacks (or proton groups).
3. epn gap. 2-4. The separation between adjacent proton groups (epn’s) within a stack.
4. N offset. 2-6. The neutron orbital radius about the direct proton pole to proton pole charge channel.
5. Cone ang (angle). 20-40 (degrees). The +/- latitudes of maximum proton charge/anticharge emissions.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Contro10

Discussion. Plane emissions. Plus and minus some angle of course. I see the circular display of the proton’s “plane emissions” as a summation of both charge and anti-charge, both present in the cross-sectional proton emission field out to some radius beyond the proton’s equator. That option is of course available. I currently believe the idea of using a single emission plane to express the true size of the proton’s emission field within the simulation’s 3D model space to be too limited. Overlapped north and south torroids are better than a plane.    

Cone emissions. I believe protons have +/- latitudes of maximum charge and anti-charge emissions of varying latitude width, that may be represented by two opposing cone shapes. When cone emissions are selected, both plane emissions and +/- cone emissions are included. From the side the planes might not be visible but they are there. The central dark circle shows both overlapping plane and cone emissions for the front/back aligned x-axis proton stacks. I believe the proton’s non-planar emissions may help explain proper neutron positioning and adjacent e-p-n (proton) stack slot bonding. Proper spacing between and within proton stacks or individual alphas.

Rather than subject the user entirely to my interpretations, give her controls to play with her own ideas. Easy enough to change the control widget limits as well.

Previously, I tried to code the neutron orbital position so as to avoid the proton’s +/-30 deg charge emission. Unfortunately (or not), the cones appear to suggest that neutrons are fed charge not from the direct proton pole to proton pole charge channel, but from the nearest proton emission latitude. That may be a delightful possibility (or not). In any case, the model is intended to be as accurate as possible and to stoke charge field thinking. I do not wish to corrupt the user with false model presumptions and assertions of my own. In adding controls, the user may be able to see their own charge field possibilities and less as a simulated model.

No pythreejs rendered output. Issue #381.

After a month with no problem, on 9 August, I’d lost the rendered output again. My note at the time - With the Jupyter Noteook program open in a separate window, I used my chrome browser to go to a blog site I’ve routinely visited since starting this project. The site appeared, momentarily went black - visually striking, then re-appeared normally. I went straight back to the Jupyter Notebook chrome window and saw that the threejs rendered output was gone. I tried relaunching anaconda and notebook and my notebook file – no joy. I tried relaunching chrome, anaconda notebook and my file, and saw that the rendered output was restored. Only with chrome? Relaunching chrome (and Anaconda and Notebook) is certainly easier than rebooting my computer. See if it happens again.

I’d not added any information to issue #381, yet was happy to receive a message from vidartf first thing on 10 August. The next time this issue occurs, please check your browser's console for any output (and share it here). It might be that you are hitting some browser limit related to WebGL.

An out of the blue timely Sherlock Holmes-like instruction, consistent with the facts before me. If we have a size issue now, what about doubling and tripling atoms? 

I admit I’ve become a bit shy of using my browser for other things while the program is running. check your browser's console for any output (and share it here) sounds challenging.  

Later, with the program running, I used another chrome window to visit that same site again. Sure enough, again saw a black flash. This time however, I tried moving my mouse to the window sliders to change the window size and somehow screwed-up and locked the screen, presumably too many commands while downloading loading a large number of images; the site also has a black background twitter feed sidebar that kicks in with a wide screen window setting. After several seconds I tried and failed to access my task manager. A minute later I ended up pressing the computer’s power switch for over 15 seconds to force it to turn off.

I tried again. The site and the program are currently both running in the background with no problem. I’ll operate as usual for a few days to see if it happens again more gracefully.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Aug 18, 2022 5:58 pm

.
Sorry Cr6. No new progress or pythreejs output rendering disappearances to report. vidartf’s reply, “please check your browser's console for any output (and share it here)” made me check my browser’s console. Its found under “developer tools”. How embarrassing that I hadn't considered it before. The console shows Jupyter notebook messages for all the notebook projects. Before anything else, I need to study up on them and try to understand what the heck they’re telling me.

Your thoughts are always welcome.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Aug 25, 2022 4:48 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Europi11
Began at active AtomBuilder3’s cell 10, ‘Atom data’. Cleared console and ran notebook’s - Run all cells above, command. The console showed 2 verbose messages. Selected 63 Europium, and cones and then - Run all cells below - resulted in 714 messages, 707 user messages, 1 info and 713 verbose. Using the orbital camera to move the image resulted in the console output shown. Turning on a rotation generates streams of increasing numbers of messages.  

More no new progress and no new pythreejs output rendering disappearances to report. Jupyter notebook is always running in the background. Trying to learn about dev tools.

“please check your browser's console for any output (and share it here)”

Jupyter notebook runs in a browser, such as chrome. The browser console is found on one of the tabs included in chrome’s built-in “developer tools” application. The easiest way (aside from using control keys) to launch the dev tools app is by right-clicking something on the browser, then clicking on ‘inspect’. The console will then usually be occupying part of the screen, it displays info status messages, alerts, warnings and errors. The console also allows live code interaction for use in site inspection, development, debugging or error correction.

Searching on both “Jupyter notebook and Developer tools” I found only one return, a gitbook. The Book of Jupyter,

https://carreau.gitbooks.io/jupyter-book/content/introtojs.html

which provides a brief overview of Developer tools, but little of any potential use that I could see. Associated tutorial(s) is alluded to but are not shown in other sections. Maybe this gitbook is a reference for said tutorial? Maybe the gitbook needs to be purchased first? Its not a reference I’d care to pursue or recommend further.  

Moving along, I reviewed several “developer tools” youtube videos. As I understand it, developer tools allows one to view (or modify) the files used to create and display a web site, primarily javascript, HTML5 and CSS type files. Dev tools is intended for, maybe even absolutely essential to site developers.

The great thing about Jupyter notebook is that Jupyter notebook itself may be considered an integrated development environment (ide) which provides ‘dev tools’-like functionality in a browser automatically, such as interaction with “live” code.  

Nevertheless, learning dev tools seems to offer its advantages, applicable to most any site. Jupyter notebook provides dev tools with plenty to mess with, starting with console log messages. We do have errors (not shown here) which I do not understand. I’ll need to spend more time at it.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Sep 01, 2022 4:48 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Hetoro10
A failed alternative emission field model.

No code progress to speak of.

Back on 11 August, talking about proton emissions in 3D model space, I criticized circular emission planes, saying. “Overlapped north and south toroids are better than a plane.”

I attempted to replace the proton’s planar emission with some sort of toroidal emission field(s), north or south of various sizes or overlapped into single toroid's. I stand corrected, a toroidal emission is always confusing. A circular plane emission is much better than a toroid(s) emission.

Progress with respect to lost outputs.

No pythreejs rendered output. Issue #381.

The issue is closed.

Notebook lost the rendered output again on Monday morning, 29 August 22.

I posted a reply to vidartf, https://github.com/jupyter-widgets/pythreejs/issues/381
including a lengthy description and comment:

I wrote. Your WebGL limit guess appears to be correct. The console log includes the message: mBuilder.ipynb:1 WebGL: CONTEXT_LOST_WEBGL: loseContext: context lost.

As vidartf had directed, I also included a dev tools console log file, plus 2 more for good measure.
1. The console log file output during the loss of threejs rendered output. localhost-1661782215490.log
2. A normal initial log output.  localhost-1661785463375.log
3. A normal operational log output. localhost-1661789658096.log

vidartf replied on Wednesday morning, 31 Aug 22.

Thanks for the context and the confirmation via logs. I think we can still improve our handling of context loss (https://www.khronos.org/webgl/wiki/HandlingContextLost), but in general, saving your notebook and refreshing the page should hopefully be enough.

Airman. In other words, No problemo. An occasional loss of the WebGL context (and notebook’s pythreejs rendered output) when the program is opened for many hours at a time in the background is NOT the fatal error I imagined; good to know. I thanked him and closed issue #381.

And Progress with respect to errors.

5 Initial errors.
Code:
5 Initial errors.
main.min.js?v=7e50cb…744d71ff0834f:59830 Failed to render mimetype "application/vnd.jupyter.widget-view+json" with:  Error: A Jupyter widget could not be displayed because the widget state could not be found. This could happen if the kernel storing the widget is no longer available, or if the widget state was not saved in the notebook. You may be able to create the widget by running the appropriate cells.  
Errors encountered in the dev tools console when first turning on mBuilder or AB3. AB has 7 and AB2 has 4. All widget state errors.

Last time I wrote, "We do have errors (not shown here) which I do not understand".
I should have mentioned that the dev tools console log errors received occur only during the mBuilder or AB3 notebook programs’ start, before going to cell 10 and using the run-all-above command. There’s likely some way to clear that initial error, such that the program starts with the periodic table and gui control panel displayed. In which case the user wouldn’t need to run-all-above. Maybe a future action-item. For the time being, in the dev tools videos I’ve seen, the presenter(s) tells the viewer to just clear the initial errors. After doing so, the program generates the thousands of error-less dev tool console log messages I described last week.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Thu Sep 01, 2022 11:34 pm

Hi LTAM,

Looks like I'm able to render okay if "number" is hard coded and not pulled from the gui. Makes me think the gui is consuming too much memory from the initial look at it.

This may be the issue? An old K3D...they have some pretty complex scripts still rendering.
https://github.com/K3D-tools/K3D-jupyter/blob/main/README.md

You may want to ask vidartf to ensure he has the latest K3D library.  BTW, I was able to render your mBuild file on my windows system with Python 3.9 with the latest Microsoft Edge browser.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Bugat210

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Sat Sep 03, 2022 8:16 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Cr24mb10
24 Chromium, Cr. Latest e-p-n proton stack version.

Cr6 wrote. Looks like I'm able to render okay if "number" is hard coded and not pulled from the gui. Makes me think the gui is consuming too much memory from the initial look at it.
How did you hard code it? In your image, the selected tab includes a blank atom label, and the two SL tabs indicate He but I recognize Chromium when I see it. The Peg neutrons opposite the protons in slots 10 – 13 and zero neutrons in slots 14 and 15 indicate a version earlier than the current e-p-n stacks. Almost all of those e-p-n stacks currently contain single  offset neutrons, orbiting the direct proton pole to proton pole charge channel. The hard coded modification was made to AB2.  

The easiest code change might be to go to the “Atom data” cell, and add “number = 24” (or some other atomic number) just above, “An = elements[number-1]”. But then the tabs would indicate Cr and not He.

I don’t think gui memory is the problem. The error I posted last time includes, QUOTE. “A Jupyter widget could not be displayed because the widget state could not be found”.

https://ipywidgets.readthedocs.io/en/stable/embedding.html#save-notebook-widget-state
Here’s a site that describes widget states. If the widget state is properly saved, then just turning on the notebook file will display a rendered widget. Since learning about them yesterday, I’ve tried clearing and saving widget states without any successful saves. I keep getting broken links, lost kernals and new errors. Maybe I’m not going about it properly. The code uses several widgets: the periodic table, gui, slotLayouts, tab enclosure and rotation controls. Which widget state gets “saved” exactly?

Cr6 wrote.  This may be the issue? An old K3D...they have some pretty complex scripts still rendering.
https://github.com/K3D-tools/K3D-jupyter/blob/main/README.md

You may want to ask vidartf to ensure he has the latest K3D library.  

Please note that vidartf is one of the seven K3D-jupyter contributors shown on your K3D README.md link. I'm sure he's current, and then some. The "Interactive showcase gallery" link included in the README worked fine for me.

None of the AtomBuilder or mBuilder files use K3D. I recall you pointing out the three orthogonal backplanes, the K3D background grid in the past. Do you still want that? Or is there some other K3D shape you’re interested in?

Cr6 wrote. BTW, I was able to render your mBuild file on my windows system with Python 3.9 with the latest Microsoft Edge browser.

Good to know it works! Does that mean the latest Microsoft Edge browser can run Jupyter notebook files like chrome can? Or is there a python/notebook readable app like binder built-in? I gave up looking at the new Microsoft Edge browser when I saw students can pay the cheapest 50% rate at $2.99 a month.

Cr6, You’re the only one I know who’s “run” these notebook files. Please confirm you’re not having difficulties with any of them. Sure I’m making slow progress, including errors and lost outputs, I feel a bit more secure. Finally beginning to think about how I should bind two atoms together.

Pardon me for asking, I’d greatly appreciate some words, direction or critical assessment from you.  
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Sat Sep 03, 2022 8:36 pm

Hi LTAM,

Let me do a much more thorough check on my system this weekend.

I can say it runs on Jupyter-Brave and Edge on Windows. It works fine on my Linux Mint box with Brave if the "number=XX" is hardcoded as well. Good to know about K3D and support of this library! Didn't know that.


Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Tue Sep 06, 2022 1:24 am

Hi LTAM...just a quick update on holiday after a few beers. I bet this might be just an out-of memory issue?  I kept seeing out of memory issues on my jupyter-build runs with your LTAirman github call for awhile. Eventually it did start the build after giving it all the memory available and I'm able to see it. You might need to up your laptop to a gamer's system with 128Gigs of memory? Also it seems to run okay on a virtual linux box using Jupyter Lab 3.4.6 on an Oracle VM virtual Linux box...you'll find it linux is probably best for this. This is not Anaconda:

Miles Periodic Table with Standard Periodic Table reference - Page 5 Atombu10

Miles Periodic Table with Standard Periodic Table reference - Page 5 Atombu11

I also had to make a raw call to the file with Jupyter Labs - the "Tab Crash" was the Periodic Table rendering showing "Out of Memory":

Miles Periodic Table with Standard Periodic Table reference - Page 5 Atombu12

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Sep 08, 2022 5:40 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Mercur10
Mercury console log.

Thanks Cr6, I'll make this a quick update too. Hearing you’ve got “out-off memory” issues that eventually work sounds important but not debilitating. Or am I mistaken? Are you getting alerts or log messages to that affect? Any one program more than another?

I still haven’t properly saved any widget state yet, nor considered or discussed all the programs’ remaining console log warnings. They’ve put me in a bit of a funk, a state of confusion with no idea how to correct or otherwise account for them.

When spinning threejs model objects, one must assign the objects into one or more spin groups. The atom is the first spin group. For each of the up-to 19 slots to spin independently (each around their own central spin axis), each slot must be its own spin group, 19 groups. Note that every object (electron, proton and neutron) within each slot’s spin group spin in the same direction as a single object. The carousel is another spin group.

When I first began trying to code a second atom, I copied AtomBuilder2’s full set of atom, carousel and 19 SL groups. When I had that second set of spin groups available, I realized that would allow any particular proton within a slot to spin in one of two possible contra spinning directions – left or right. That enabled me to redefine an atom’s proton stack bonds based on Miles’ Diatomic Hydrogen paper. I’m happy to have arrived at the dual directional e-p-n proton stacks model although I’m sure I haven’t assigned those e-p-n stacks properly yet either.

At which time AB2 – with single directional slots, was replaced with AtomBuilder3 - dual directional e-p-n slots (mBuilder also has e-p-n slots). With respect to spin groups, the memory load of AB3 is twice that of AB2, but I haven’t noticed any “performance” difference between the two. Apparently the “out-off memory" issues do not involve spin groups. In going forward to two and three atoms, the total number of spin groups will double and triple.  I’ll likely start by building simple non-spinning molecules for starters.

But first; Must concentrate on this console stuff.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Tue Sep 13, 2022 1:27 am

Unfortunately, we may have to go to a "Graph" database with this rather than a simple 2D matrix with a table. It is a whole re-engineering to a degree but it should allow more configurations with 3-D work.

What I see with the debugger added in Jupyter Lab:

Miles Periodic Table with Standard Periodic Table reference - Page 5 Jupyte10

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Sep 15, 2022 4:31 pm

.
Code:

##################################
# AtomBuilder.
# Partial transcribed outputs taken from the Console running each
# cell steps 1-22, (the guiwidgets cell twice), obtaining console
# outputs, cleaned-up/copied most of the pertinent outputs below,
# then cleared the console to run the next cell.
# Only the 1a. output is dependably constant, as well as many [Violation]s
# that seem to be assoc with mouse actions(?).
# All the other outputs including b. c. and d.are received intermittently.
##################################
 AtomBuilder.
 
1. a. Open AtomBuilder notebook and console. Obtained outputs
   labeled a. below, including: 23 mess, 21 user mess, 7 errors,
   2 warnings, 13 info and 1 verbose. Cleared console.

2. Ran Atom Builder Markdown cell. Received 1 mess/verbose.
[Violation] 'click' handler took 158ms
   cleared console.

3. Ran cell 'from pythreejs import ... '. Received 1 mess/verbose.
[Violation] 'click' handler took 152ms
   Cleared console.

4. Ran cell 'view_width = 600 ... 'Received 2 messages/verbose.
[Violation] 'click' handler took 678ms
[Violation] Forced reflow while executing JavaScript took 230ms
   Cleared console.

5. Ran cell '# Creating the periodic table'. Received 4 messages/verbose.
[Violation] 'focus' handler took 280ms
[Violation] Forced reflow while executing JavaScript took 96ms
[Violation] 'click' handler took 322ms
[Violation] Forced reflow while executing JavaScript took 60ms
   Cleared console.

6. Ran cell 'Defining the GUI widgits. No console outputs.

7. Ran the Periodic table markup cell. Received 1 messages/verbose.
[Violation] 'click' handler took 176ms
   Cleared console.

8. Ran cell 'grid # Display the Periodic Table'.  No console outputs.

9. Ran cell 'guiwidgets'.  No console outputs.

10. With the gui now active, chose an atom and ran the 'guiwidgets' cell again. Received 2 message/verbose.
    No console outputs.

11. Ran Cell "This short vertical extra notebook cell ... . Received 2 more messge/verbose.
[Violation] 'click' handler took 2046ms
[Violation] Forced reflow while executing JavaScript took 783ms
    Cleared console.

12. b. Ran cell 'atomicNumber = number '.  Received 142 mess, 138 user mess, 142 verbose.
    Reported under b. below. Cleared console.
 
13. Ran cell # Create Slotlayout Diagram. No console output.

14. Ran Markup cell, 'The Slot Layout diagram'. Received 1 message/verbose
[Violation] 'click' handler took 182ms
    Cleared console.

15. Ran Cell 'sgrid'. Received 1 messge/verbose.
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
 Cleared console.

16. Ran cell 'if atomsLabel.value == True:'. Received 2 messages/verbose
[Violation] 'click' handler took 186ms
[Violation] Forced reflow while executing JavaScript took 41ms
    Cleared console.

17. Ran cell '# Defining the rotation ... '. Received 1 message/verbose
[Violation] Forced reflow while executing JavaScript took 42ms
    Cleared console.

18. Ran markup cell, 'Carousel and Slot Rotation Controls'. No console output.

19. Ran cell 'rgrid'. Received 1 message/verbose
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
    Cleared console.

20. c. Ran cell 15. 'renderer'. Received 9 mess, 8 user mess, 1 info and 8 verbose,
    reported as c. below.
    Cleared console.

20, Ran cell 19. 'rgrid'. Received 3 message/verbose.
[Violation] 'click' handler took 222ms
[Violation] Forced reflow while executing JavaScript took 53ms
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
    Cleared console.

21. d. Ran cell '# The periodic table',the non-interactive one displayed
    as a notebook tab. Received 12 mess, 1 user mess, 1 info and 11 verbose,
    reported as d. below. All these outputs  

22. Ran final Markup cell. No console outputs.

AtomBuilder a-d outputs:
a. Messages: 23. The 7:errors and 2:warnings and load extension:info are repeated below.
main.min.js?v=7e50cb…744d71ff0834f:69956 actions jupyter-notebook:find-and-replace does not exist, still binding it in case it will be defined later...
main.min.js?v=7e50cb…744d71ff0834f:24190 load_extensions
Arguments(7)
main.min.js?v=7e50cb…744d71ff0834f:57865 Loaded moment locale en
main.min.js?v=7e50cb…744d71ff0834f:63095 Session: kernel_created (f51e9e4e-905b-409e-80ea-802f23e22b15)
main.min.js?v=7e50cb…744d71ff0834f:62240 Starting WebSockets: ws://localhost:8888/api/kernels/411c3901-3c36-4925-8220-6cb46ee3532e
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: bqplot/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: ipycanvas/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: ipyevents/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-datawidgets/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-matplotlib/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-threejs/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-js-widgets/extension
main.min.js?v=7e50cb…744d71ff0834f:61883 Kernel: kernel_connected (411c3901-3c36-4925-8220-6cb46ee3532e)
main.min.js?v=7e50cb…744d71ff0834f:61883 Kernel: kernel_ready (411c3901-3c36-4925-8220-6cb46ee3532e)
7
main.min.js?v=7e50cb…744d71ff0834f:59830 Failed to render mimetype "application/vnd.jupyter.widget-view+json" with:  Error: A Jupyter widget could not be displayed because the widget state could not be found. This could happen if the kernel storing the widget is no longer available, or if the widget state was not saved in the notebook. You may be able to create the widget by running the appropriate cells.
    at extension.js:157:21
    at OutputArea.<anonymous> (extension.js:168:9)
    at OutputArea.append_mime_type (main.min.js?v=7e50cb…d71ff0834f:59827:43)
    at OutputArea.append_display_data (main.min.js?v=7e50cb…d71ff0834f:59788:18)
    at OutputArea.append_output (main.min.js?v=7e50cb…d71ff0834f:59469:18)
    at OutputArea.fromJSON (main.min.js?v=7e50cb…d71ff0834f:60149:18)
    at CodeCell.fromJSON (main.min.js?v=7e50cb…d71ff0834f:61382:30)
    at Notebook.render_cell_output (main.min.js?v=7e50cb…d71ff0834f:67043:19)
    at manager.js:131:39
    at Array.forEach (<anonymous>)
DevTools failed to load source map: Could not load content for http://localhost:8888/static/notebook/js/main.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
main.min.js?v=7e50cb…c744d71ff0834f:6713 [Violation] 'setTimeout' handler took 82ms
b. messages: 142
[Violation] 'focus' handler took 994ms
[Violation] Forced reflow while executing JavaScript took 366ms
[Violation] 'click' handler took 415ms
[Violation] Forced reflow while executing JavaScript took 101ms
Three.js:281 execThreeObjMethod: rotateZ(2.684218523279832)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(2.161256903808503)
Three.js:332 sending return value to server...
...
c. messages: 9.
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
Renderable.js:517 TV(228668): unfreeze
Renderable.js:517 TV(228668): ThreeView.acquiring...
RendererPool.js:134 RendererPool.acquiring...
three.js?v=20220913083405:179 THREE.WebGLRenderer 97
RendererPool.js:179 RendererPool.acquire(id=0)
Renderable.js:517 TV(228668): ThreeView.acquireRenderer(0)
Renderable.js:517 TV(228668): Enable controls
Renderable.js:517 TV(228668): renderScene
d. messages: 12
RendererPool.release(id=1)
Renderable.js:517 TV(914054): ThreeView WebGL context is being reclaimed: 1
Renderable.js:513 TV(914054): already frozen...
Renderable.js:517 TV(914054): Disable controls
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
Renderable.js:517 TV(893118): unfreeze
Renderable.js:517 TV(893118): ThreeView.acquiring...
RendererPool.js:134 RendererPool.acquiring...
RendererPool.js:179 RendererPool.acquire(id=1)
Renderable.js:517 TV(893118): ThreeView.acquireRenderer(1)
Renderable.js:517 TV(893118): Enable controls
Renderable.js:517 TV(893118): renderScene
a. User messages: 21. The user messages are the same as the messages, minus the
last two messages, DevTools failed ... and [Violation] 'setTimeout' handler took ...
b. User messages: 138. The same as message/verbose minus [Violation] Forced reflow
c. User messages: 8 Same as messages minus the first violation.
d. User messages: 11 Same as messages minus the first violation.
a. Errors: 7
Error: A Jupyter widget could not be displayed because the widget state could not be found. This could happen if the kernel storing the widget is no longer available, or if the widget state was not saved in the notebook. You may be able to create the widget by running the appropriate cells.
b. Errors: 0.
c. Errors. 0
d. Errors. 0
a. Warnings: 2.
actions jupyter-notebook:find-and-replace does not exist, still binding it in case it will be defined later...
DevTools failed to load source map: Could not load content for http://localhost:8888/static/notebook/js/main.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
b. Warnings: 0.
c. Warnings: 0.
d. Warnings: 0.
a. Ifo: 13.
load_extensions Arguments(7)
Loaded moment locale en
Session: kernel_created (f51e9e4e-905b-409e-80ea-802f23e22b15)
Starting WebSockets: ws://localhost:8888/api/kernels/411c3901-3c36-4925-8220-6cb46ee3532e
Loading extension: bqplot/extension
Loading extension: ipycanvas/extension
Loading extension: ipyevents/extension
Loading extension: jupyter-datawidgets/extension
Loading extension: jupyter-matplotlib/extension
Loading extension: jupyter-threejs/extension
Loading extension: jupyter-js-widgets/extension
Kernel: kernel_connected (411c3901-3c36-4925-8220-6cb46ee3532e)
Kernel: kernel_ready (411c3901-3c36-4925-8220-6cb46ee3532e)
b. Info: 0.
c. Info: 1.
THREE.WebGLRenderer 97
c. Info: 1.
d. Info: 1
TV(914054): already frozen...
a. verbose: 1. [Violation] 'setTimeout' handler took 82ms
b. Verbose: 142. Same as Messages
c. Verbose: 8, I don't see the difference with Messages.
d. Verbose: 11, I don't see the difference with Messages.

##################################
# Partial transcribed notes taken from the Console output running
# AtomBuilder2, AtomBuilder3 and mBuilder.
# For each of these three notebooks, the outputs are obtained by
# copying then clearing the console after the following three actions:  
# a. Turn on the notebook, open the console.
# b. Start at the 'Atom data' cell and run-all-above.
# c. Select atom and run-all-below.
# Additional events, like clicking on the atom data cell may also
# create an output. Not all outputs are always received.
##################################
AtomBuilder2
a. 20 mess, 18 user mess, 4 errors, 2 warnings, 13 info and 2 verbose.
b. 2 messages, 2 verbose.
c. 66 mess, 62 user mess, 1 info and 65 verbose.
The 3 sets of outputs are detailed below.
 
1. Two messgaes(verbose) received when I activate cell 11 - 'Atom data'
[Violation] 'mousedown' handler took 195ms
[Violation] Forced reflow while executing JavaScript took 37ms
   Cleared console.

2. b. Two messgaes(verbose) received with cell run-all-above cmd.
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.

a. Messages: 21
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:69956 actions jupyter-notebook:find-and-replace does not exist, still binding it in case it will be defined later...
MenuBar.bind_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:69956
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24190 load_extensions Arguments(7)
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:57865 Loaded moment locale en
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63095 Session: kernel_created (2b4ae78c-bc90-44c1-8350-14a27cce2aa7)
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62240 Starting WebSockets: ws://localhost:8888/api/kernels/7ad8fa01-4b0b-4841-8820-1bcb3afac2ce
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24167 Loading extension: bqplot/extension
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24167 Loading extension: ipycanvas/extension
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24167 Loading extension: ipyevents/extension
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24167 Loading extension: jupyter-datawidgets/extension
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24167 Loading extension: jupyter-matplotlib/extension
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24167 Loading extension: jupyter-threejs/extension
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:24167 Loading extension: jupyter-js-widgets/extension
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61883 Kernel: kernel_connected (7ad8fa01-4b0b-4841-8820-1bcb3afac2ce)
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61883 Kernel: kernel_ready (7ad8fa01-4b0b-4841-8820-1bcb3afac2ce)
4main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59830 Failed to render mimetype "application/vnd.jupyter.widget-view+json" with:  Error: A Jupyter widget could not be displayed because the widget state could not be found. This could happen if the kernel storing the widget is no longer available, or if the widget state was not saved in the notebook. You may be able to create the widget by running the appropriate cells.
    at extension.js:157:21
    at OutputArea.<anonymous> (extension.js:168:9)
    at OutputArea.append_mime_type (main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827:43)
    at OutputArea.append_display_data (main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788:18)
    at OutputArea.append_output (main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469:18)
    at OutputArea.fromJSON (main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:60149:18)
    at CodeCell.fromJSON (main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61382:30)
    at Notebook.render_cell_output (main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:67043:19)
    at manager.js:131:39
    at Array.forEach (<anonymous>)
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59830
DevTools failed to load source map: Could not load content for http://localhost:8888/static/notebook/js/main.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
[Violation] 'setTimeout' handler took 124ms
[Violation] Forced reflow while executing JavaScript took 48ms
b. Messages: 2
[Violation] 'mousedown' handler took 169ms
[Violation] Forced reflow while executing JavaScript took 30ms
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2 [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2 [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive

c. Messages: 66.
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2 [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2 [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
append_html @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59853
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_execute_result @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59617
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59449
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
Three.js:281 execThreeObjMethod: rotateZ(3.6601345488551904)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(3.9606423177172725)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(3.541708138013911)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(3.144605511029693)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(1.1291024138801349)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(3.996000721381145)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(1.6823098226098958)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(4.448500898796295)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(3.144605511029693)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(5.4799944322193905)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(-1.5723027555148466)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(3.7096670904510565)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(3.483488269522218)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(2.7623303612139223)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(3.144605511029693)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(5.0784759369562815)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(-1.5723027555148466)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(3.710645407583361)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(5.357442920890825)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(1.0079073307971038)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(3.144605511029693)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(5.793526966252417)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(5.383785258131928)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(5.203488784066734)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(2.5614657683906366)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(3.144605511029693)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(2.6914257693249666)
Three.js:332 sending return value to server...
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2 [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2 [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event. Consider using MutationObserver to make the page more responsive.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785
Renderable.js:517 TV(973851): unfreeze
Renderable.js:517 TV(973851): ThreeView.acquiring...
RendererPool.js:134 RendererPool.acquiring...
three.js?v=20220915103453:179 THREE.WebGLRenderer 97
RendererPool.js:179 RendererPool.acquire(id=0)
Renderable.js:517 TV(973851): ThreeView.acquireRenderer(0)
Renderable.js:517 TV(973851): Enable controls
Renderable.js:517 TV(973851): renderScene
a. User messages: 18.
b. User messages: 0.
c. User messages: 62.
b. Errors: 0
c. Errors: 0
a. Warnings: 2
main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:69956 actions jupyter-notebook:find-and-replace does not exist, still binding it in case it will be defined later...
MenuBar.bind_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:69956
DevTools failed to load source map: Could not load content for http://localhost:8888/static/notebook/js/main.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
b. Warnings: 0
c. Warnings: 0
a. Info: 13
main.min.js?v=7e50cb…744d71ff0834f:24190 load_extensions
Arguments(7)
main.min.js?v=7e50cb…744d71ff0834f:57865 Loaded moment locale en
main.min.js?v=7e50cb…744d71ff0834f:63095 Session: kernel_created (2b4ae78c-bc90-44c1-8350-14a27cce2aa7)
main.min.js?v=7e50cb…744d71ff0834f:62240 Starting WebSockets: ws://localhost:8888/api/kernels/7ad8fa01-4b0b-4841-8820-1bcb3afac2ce
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: bqplot/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: ipycanvas/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: ipyevents/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-datawidgets/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-matplotlib/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-threejs/extension
main.min.js?v=7e50cb…744d71ff0834f:24167 Loading extension: jupyter-js-widgets/extension
main.min.js?v=7e50cb…744d71ff0834f:61883 Kernel: kernel_connected (7ad8fa01-4b0b-4841-8820-1bcb3afac2ce)
main.min.js?v=7e50cb…744d71ff0834f:61883 Kernel: kernel_ready (7ad8fa01-4b0b-4841-8820-1bcb3afac2ce)
b. Info: 0.
c. Info: 1.
THREE.WebGLRenderer 97
a. verbose: 2
[Violation] 'setTimeout' handler took 124ms
[Violation] Forced reflow while executing JavaScript took 48ms
b. Verbose: 2. see messages.
c. Verbose: 82. see messsages.

##################################
Console outputs. Trying to get organized. This past week I brought together all the console outputs of AtomBuilder, AB2, AB3 and mBuilder along with notes into a single text document 1233 lines long. Too long to post in it’s entirety, I’ve included the first 513 lines (AB and AB2) above. I’ll try reducing it further for better summary/understanding.

Cr6 wrote. Unfortunately, we may have to go to a "Graph" database with this rather than a simple 2D matrix with a table. It is a whole re-engineering to a degree but it should allow more configurations with 3-D work.
.
Cr6, I did some database reviews. At present, the data is in a csv file and each atom is assembled according to the build atom cell. I suppose AtomBuilder3 might be described as a Document (key:value) database, each different atom (key), taken from a table has a unique model output (value). A Graph database is described as being most appropriate for identifying relationships between many-to-many objects. A molecule selected by picking and bonding atoms from the many available atoms and bonding locations should qualify. I believe you’re correct, a graph database is the way to go.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Mon Sep 19, 2022 12:28 am

Hi LTAM,

A couple of graph databases I'm looking at are Neo4j, OrientDB, HugeGraph and SurrealDB. Just looking for something small (free) and effective. Also looking to see what can be leveraged with Python-Jupyter that you have already created.

There are a few of them out there:

https://www.libhunt.com/topic/graph-database

https://github.com/apache/incubator-hugegraph

https://github.com/orientechnologies/orientdb

https://memgraph.com/blog/memgraph-with-python-and-jupyter-notebooks

More examples:
https://solutionsreview.com/data-management/the-best-graph-databases/

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Sep 22, 2022 6:27 pm

.
Code:
#####################################################
# Summary Partial transcribed Console log outputs for:
# AtomBuilder,  AtomBuilder2, AtomBuilder3 and mBuilder.
###########################################
# Index: At the document end. Eight specific recurring
# sets of outputs of multiple lines are replaced with
# a single line index title, preceeded with a #, such as
# '# [Violation] Added ... '. The index shows the full
# set of outputs and locations where the output occurs.
# Without the index this document would double or triple
# in size, and overly complicate this summary document.
#####################################################
# AtomBuilder.
# Partial transcribed outputs taken from the Console
# running each cell, 1-23, (the guiwidgets cell is run
# twice). Resulting in theconsole outputs. Cleaned-up/
# copied most of the pertinent outputs  below, then  
# cleared the console to run the next cell.
# Only the 1a. output is dependably constant, as well
# as several [Violation]s that seem to be associated
# with mouse click actions. All the other outputs
# including b. c. and d.are received intermittently.
#####################################################
AtomBuilder.
1. a. Open AtomBuilder notebook and console. Obtained outputs
   labeled a. below, including: 23 mess, 21 user mess, 7 errors,
   2 warnings, 13 info and 1 verbose. Cleared console.

2. Ran Atom Builder Markdown cell. Received 1 mess/verbose.
[Violation] 'click' handler took 158ms
   cleared console.

3. Ran cell 'from pythreejs import ... '. Received 1 mess/verbose.
[Violation] 'click' handler took 152ms
   Cleared console.

4. Ran cell 'view_width = 600 ... 'Received 2 messages/verbose.
[Violation] 'click' handler took 678ms
[Violation] Forced reflow while executing JavaScript took 230ms
   This number will grow with mouse clicks(?). Cleared console.

5. Ran cell '# Creating the periodic table'. Received 4 messages/verbose.
[Violation] 'mousedown' handler took 152ms
[Violation] 'focus' handler took 280ms
[Violation] Forced reflow while executing JavaScript took 96ms
[Violation] 'click' handler took 322ms
   Cleared console.

6. Ran cell 'Defining the GUI widgits. No console outputs.

7. Ran the Periodic table markup cell. Received 1 messages/verbose.
[Violation] 'click' handler took 176ms
   Cleared console.

8. Ran cell 'grid # Display the Periodic Table'. Received 2 messages/verbose.
[Violation] 'click' handler took 184ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
   Cleared console.

9. Ran cell 'guiwidgets'.  No console outputs.Received 2 messages/verbose.
[Violation] 'click' handler took 178ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
   Cleared console.

10. With the gui now active, chose an atom and ran the 'guiwidgets' cell again.
Received 2 messages/verbose:
[Violation] 'click' handler took 2376ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
    Cleared console.

11. Ran Cell "This short vertical extra notebook cell ... .
[Violation] 'click' handler took 2260ms
[Violation] Forced reflow while executing JavaScript took 955ms  
    Cleared console.
 
12. b. Ran cell 'atomicNumber = number '.  Received 36 mess, 34 user mess, 36 verbose.
    Reported under b. below. Cleared console.
 
13. Ran cell # Create Slotlayout Diagram. No console output.

14. Ran Markup cell, 'The Slot Layout diagram'. Received 1 message/verbose
[Violation] 'click' handler took 182ms
    Cleared console.

15. Ran Cell 'sgrid'. Received 1 messge/verbose.
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
 Cleared console.

16. Ran cell 'if atomsLabel.value == True:'. Received 2 messages/verbose
[Violation] 'click' handler took 186ms
[Violation] Forced reflow while executing JavaScript took 41ms
    Cleared console.

17. Ran cell '# Defining the rotation ... '. Received 1 message/verbose
[Violation] Forced reflow while executing JavaScript took 42ms
    Cleared console.

18. Ran markup cell, 'Carousel and Slot Rotation Controls'. No console output.

19. Ran cell 'rgrid'. Received 1 message/verbose
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
    Cleared console.

20. c. Ran cell 15. 'renderer'. Received 9 mess, 8 user mess, 1 info and 8 verbose,
    reported as c. below.
    Cleared console.

21, Ran cell 19. 'rgrid'. Received 3 message/verbose.
[Violation] 'click' handler took 222ms
[Violation] Forced reflow while executing JavaScript took 53ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
    Cleared console.

22. d. Ran cell '# The periodic table', the non-interactive one displayed
    as a notebook tab. Received 12 mess, 11 user mess, 1 info and 11 verbose,
    reported as d. below.

23. Ran final Markup cell. No console outputs.

AtomBuilder (AB) a-d outputs:

a. 23 Messages: 7:errors, 2:warnings, 1:# load extension(13).
# Warning. actions jupyter-notebook:find-and-replace does not exist
# load_extensions(13)
# 7 Error. Failed to render.
# DevTools failed to load source map:
[Violation] 'setTimeout' handler took 82ms
b. 36 messages: # The total number will depend on the atom selected.
[Violation] 'click' handler took 325ms
[Violation] Forced reflow while executing JavaScript took 85ms[Violation] 'focus' handler took 197ms
# Three.js execThreeObjMethod ... sending  (34)
c. 9 messages:
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
8 # Renderableble. ... renderScene (8)
THREE.WebGLRenderer 97
d. 12 messages:
4 # RendererPool (4)
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Renderableble. ... renderScene (8)

a. 21 User messages:
# Warning. actions jupyter-notebook:find-and-replace does not exist
# load_extensions(13)
7 # Error. Failed to render.
b. 34 User messages: # Three.js execThreeObjMethod ... sending  (34)
c. 8 User messages: # Renderableble. ... renderScene (8). Same as messages minus the first violation.
d. 11 User messages:
4 # RendererPool (4)
# Renderableble. ... renderScene (8)

a. 7 Errors: 7 # Error. Failed to render.
b. Errors: 0
c. Errors. 0
d. Errors. 0

a. 2 Warnings:
# Warning. actions jupyter-notebook:find-and-replace does not exist
# DevTools failed to load source map: Could not load contentb. Warnings: 0.
b. Warnings: 0.
c. Warnings: 0.
d. Warnings: 0.

a. 13 Info: # load_extensions(13)
b. Info: 0.
c. Info: 1. THREE.WebGLRenderer 97
d. Info: 1. TV(914054): already frozen...

a. 1 Verbose: [Violation] 'setTimeout' handler took 82ms
b. 36 Verbose: Same as b. Messages
c. 8 Verbose: I don't see the difference with Messages.
d. 11 Verbose: I don't see the difference with Messages.

##################################
# Partial transcribed notes taken from the Console output running
# AtomBuilder2, AtomBuilder3 and mBuilder.
# For each of these three notebooks, the outputs are obtained by
# copying then clearing the console after the following three actions:  
# a. Turn on the notebook, open the console.
# b. Start at the 'Atom data' cell and run-all-above.
# c. Select atom and run-all-below.
# Additional events, like clicking on the atom data cell may also
# create an output. Not all outputs are always received.
##################################
AtomBuilder2
a. 27 mess, 18 user mess, 4 errors, 2 warnings, 13 info and 2 verbose.
b. 2 messages, 2 verbose.
c. 78 mess, 73 user mess, 1 info and 77 verbose.
The 3 sets of outputs are detailed below.
 
1. Two messgaes(verbose) received when I activate cell 11 - 'Atom data'
[Violation] 'mousedown' handler took 195ms
[Violation] Forced reflow while executing JavaScript took 37ms
   Cleared console.

a. 27 Messages:
# Warning. actions jupyter-notebook:find-and-replace does not exist
13 # load_extensions(13)
4 # Error. Failed to render.  
# DevTools failed to load source map: Could not load content
6 [Violation] 'setTimeout' handler took <N>ms
[Violation] Forced reflow while executing JavaScript took 48ms
b. 2 Messages/verbose 2:
2 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
c. 78 Messages:
# RendererPool (4)
[Violation] 'click' handler took 186ms
2 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
2 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Three.js execThreeObjMethod: ... sending
2 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
2 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Renderableble. ... renderScene (8)

a. 18 User messages:
# Warning. actions jupyter-notebook:find-and-replace does not exist
13 # load_extensions(13)
4 # Error. Failed to render.
b. User messages: 0.
c. 73 User messages:
# RendererPool (4)
# Three.js execThreeObjMethod: ... sending
# Renderableble. ... renderScene (8)

a. Errors: 4 # Error. Failed to render.
b. Errors: 0
c. Errors: 0

a. Warnings: 2
# Warning. actions jupyter-notebook:find-and-replace does not exist.
# DevTools failed to load source map: Could not load contentb. Warnings: 0
b. Warnings: 0
c. Warnings: 0

a. 13 Info: 13 # load_extensions(13)
b. Info: 0.
c. Info: 1. # THREE.WebGLRenderer 97

a. 8 verbose:
6 [Violation] 'setTimeout' handler took <N>ms
[Violation] Forced reflow while executing JavaScript took 48ms
[Violation] Forced reflow while executing JavaScript took 39ms
b. 2 Verbose: see messages.
c. 77 Verbose: see messsages.

##################################
AtomBuilder3
a. 21 mess, 19 user mess, 5 errors, 2 warnings, 13 info and 1 verbose.
b. 2 messages, 2 verbose.
c. 73 mess, 60 user mess, 1 info and 72 verbose.
The 3 sets of outputs are detailed below.
 
1. One messgaes(verbose) received when I activate cell 11 - 'Atom data'. The same info data as in AtomBuilder2 above.
[Violation] 'mousedown' handler took 195ms
[Violation] Forced reflow while executing JavaScript took 37ms.
   Clear console hit run-all-above.
 
a. Messages: 21
# Warning. actions jupyter-notebook:find-and-replace does not exist
# load_extensions(13)
5 # Error. Failed to render.
# DevTools failed to load source map: Could not load content
[Violation] 'setTimeout' handler took 111ms
[Violation] Forced reflow while executing JavaScript took 37msc.

b. Messages: 3.
[Violation] 'setTimeout' handler took 57ms
[Violation] 'mousedown' handler took 167ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.

c. 73 Messages:
[Violation] 'setTimeout' handler took 57ms
[Violation] 'click' handler took 205ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Three.js execThreeObjMethod: ... sending
3 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Renderableble. ... renderScene (8)
6 [Violation] 'setTimeout' handler took <N>ms
[Violation] Forced reflow while executing JavaScript took 32ms
[Violation] Forced reflow while executing JavaScript took 32ms

a. 19 User messages:
# Warning. actions jupyter-notebook.
# load_extensions(13).
5# Error. Failed to render.
b. User messages: 0
c. 60 User messages:
# Three.js execThreeObjMethod: ... sending
# Renderableble. ... renderScene (8)
THREE.WebGLRenderer 97

a. Errors: 5. # Error. Failed to render.
   See index.The same type widget errors as in AtomBuilder2 above.-
b. Errors: 0.
c. Errors:  0.
a. 2 Warnings:
# Warning. actions jupyter-notebook:find-and-replace does not exist
# DevTools failed to load source map: Could not load content
b. Warnings: 0.
c. Warnings: 0.
a. 13 Info: 13. # load_extensions(13)
b. Info: 0.
c. 1 Info: THREE.WebGLRenderer 97
a. 1 verbose: [Violation] 'setTimeout' handler took 127ms
b. 3 Verbose:
[Violation] 'setTimeout' handler took 57ms
[Violation] 'mousedown' handler took 167ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
c. Verbose: 72. See messages minus one(?).

##################################
mBuilder.
a. 24 mess, 19 user mess, 5 errors, 2 warnings, 13 info and 4 verbose.
b. 2 messages, 2 verbose.
c. 125 mess, 117 user mess, 1 info and 124 verbose.
The 3 sets of outputs are detailed below.

1. Four messgaes(verbose) received when I activate cell 11 - 'Atom data'. The same info data as in AtomBuilder2 above.
[Violation] Handling of 'mousewheel' input event was delayed for 112 ms due to main thread being busy. Consider marking event handler as 'passive' to make the page more responsive.
[Violation] 'mousedown' handler took 235ms
[Violation] 'mousedown' handler took 284ms
[Violation] Forced reflow while executing JavaScript took 81ms

a. 24 Messages:
# Warning. actions jupyter-notebook:find-and-replace does not exist
# load_extensions(13)
5 # Error. Failed to render.
# DevTools failed to load source map: Could not load content
[Violation] 'setTimeout' handler took 137ms
[Violation] 'setTimeout' handler took 71ms

b. 2 Messages:
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.

c. 125 Messages:
# RendererPool (4)
[Violation] 'click' handler took 205ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Three.js execThreeObjMethod: ... sending
3 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Renderableble. ... renderScene (8)
[Violation] 'setTimeout' handler took 79ms
[Violation] 'setTimeout' handler took 86ms
[Violation] 'setTimeout' handler took 89ms

a. 19 User messages:
# Warning. actions jupyter-notebook:find-and-replace does not exist
# load_extensions(13)
5 # Error. Failed to render.
b. User messages: 0.
c. 117 User messages:
# RendererPool.js
# Three.js execThreeObjMethod: ... sending

a. 5 Errors: 5 # Error. Failed to render.
b. Errors: 0
c. Errors: 0
a. 2 Warnings:
# Warning. actions jupyter-notebook:find-and-replace does not exist
# DevTools failed to load source map: Could not load content
b. Warnings: 0.
c. Warnings: 0
a. 13 Info: # load_extensions(13)
b. Info: 0.
c. 1 Info: Renderable.js:513 TV(234052): already frozen...
4 [Violation] 'setTimeout' handler took 142ms # of different durations
a. 124 verbose:
# RendererPool (4)
[Violation] 'click' handler took 205ms
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Three.js execThreeObjMethod: ... sending
3 # [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# Renderableble. ... renderScene (8)
[Violation] 'setTimeout' handler took 79ms
[Violation] 'setTimeout' handler took 86ms
[Violation] 'setTimeout' handler took 89ms
b. 2 verbose:
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.

###########################################
# Index:

# DevTools failed to load source map: Could not load content for http://localhost:8888/static/notebook/js/main.min.js.map: HTTP error: status code 404, net::ERR_HTTP_RESPONSE_CODE_FAILURE
# (AB)a.msgs,warnings, (AB2)a.msgs,warnings, (AB3) a.msgs,warnings, (mB) a.msgs,warnings

# Error. Failed to render.
# (AB)a.msgs,usermsgs,err;(AB2)a.msgs,usermsgs,err;(AB3)a.msgs,usermsgs,err;(mB)a.msgs,usermsgs,err;
Failed to render mimetype "application/vnd.jupyter.widget-view+json" with:  
Error: A Jupyter widget could not be displayed because the widget state
could not be found. This could happen if the kernel storing the widget
is no longer available, or if the widget state was not saved in the
notebook. You may be able to create the widget by running the appropriate cells.
    at extension.js:157:21
    at OutputArea.<anonymous> (extension.js:168:9)
    at OutputArea.append_mime_type (main.min.js?v=7e50cb…d71ff0834f:59827:43)
    at OutputArea.append_display_data (main.min.js?v=7e50cb…d71ff0834f:59788:18)
    at OutputArea.append_output (main.min.js?v=7e50cb…d71ff0834f:59469:18)
    at OutputArea.fromJSON (main.min.js?v=7e50cb…d71ff0834f:60149:18)
    at CodeCell.fromJSON (main.min.js?v=7e50cb…d71ff0834f:61382:30)
    at Notebook.render_cell_output (main.min.js?v=7e50cb…d71ff0834f:67043:19)
    at manager.js:131:39
    at Array.forEach (<anonymous>)

# load_extensions(13). # A set of 13 'load_extensions ...' console outputs.
# (AB)a.msgs,usermsgs,info;(AB2)a.msgs,usermsgs,info;(AB3)a.msgs,usermsgs,info;(mBa.msgs,usermsgs,info
load_extensions > Arguments(7)
Loaded moment locale en main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:57865
Session: kernel_created (238889e7-6c84-4eea-802e-e57f4bbb74dc)
Starting WebSockets: ws://localhost:8888/api/kernels/c49d8e68-26b6-4ecf-853a-79a3a5265552
Loading extension: bqplot/extension
Loading extension: ipycanvas/extension
Loading extension: ipyevents/extension
Loading extension: jupyter-datawidgets/extension
Loading extension: jupyter-matplotlib/extension
Loading extension: jupyter-threejs/extension
Loading extension: jupyter-js-widgets/extension
Kernel: kernel_connected (c49d8e68-26b6-4ecf-853a-79a3a5265552)
Kernel: kernel_ready (c49d8e68-26b6-4ecf-853a-79a3a5265552)

# [Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
# 25+ (AB)8.9.10.15.19.23.a.c.d. msgs/verbose;(AB2)b.msgs/verbose;(AB3)b.c.msgs/a.b.verbose;(mB)b.c.msgs/verbose;
[Violation] Added synchronous DOM mutation listener to a 'DOMNodeInserted' event.
add @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
each @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
ke @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
on @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
KeyboardManager.register_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:72326
(anonymous) @ extension.js:167
OutputArea.append_mime_type @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59827
OutputArea.append_display_data @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59788
OutputArea.append_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59469
OutputArea.handle_output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:59380
output @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:61213
Kernel._handle_output_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62975
i @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:2
Kernel._handle_iopub_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:63015
Kernel._finish_ws_message @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62794
(anonymous) @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:62785

# Warning. actions jupyter-notebook: find-and-replace does not exist, still binding it in case it will be defined later...
# (mB)a. msgs/warnings
actions jupyter-notebook:find-and-replace does not exist, still binding it in case it will be defined later...
MenuBar.bind_events @ main.min.js?v=7e50cbb06bc00a057be483279bc938810b467e6c9dd9b5d91eb4b06b75704564224322da095d638da40ccb4cbe79a45d46de8eb77ac598b5c1c744d71ff0834f:69956

# Renderableble. ... renderScene (8)
# (AB)c.d.msgs,usermsgs;(AB2)c.d.msgs,usermsgs;(AB3)c.d.msgs,usermsgs;(mB)a.verbose;c.msgs;
Renderableble.js:517 TV(473661): unfreeze
Renderable.js:517 TV(473661): ThreeView.acquiring...
RendererPool.js:134 RendererPool.acquiring...
three.js?v=20220918074355:179 THREE.WebGLRenderer 97#############Not always there
RendererPool.js:179 RendererPool.acquire(id=0)
Renderable.js:517 TV(473661): ThreeView.acquireRenderer(0)
Renderable.js:517 TV(473661): Enable controls
Renderable.js:517 TV(473661): renderScene

# RendererPool (4)
# (AB)d.msgs,usermsgs;(AB2)c.msgs,usermsgs;(mB)c.msgs,usermsgs,a.verbose;
Renderable.js:186 RendererPool.js:186 RendererPool.release(id=0)
Renderable.js:517 TV(792621): ThreeView WebGL context is being reclaimed: 0
Renderable.js:513 TV(792621): already frozen...
Renderable.js:517 TV(792621): Disable controls

# Three.js execThreeObjMethod: ... sending
# (AB)b.msgs,usermsgs;(AB2)c.msgs,usermsgs;(AB3)c.msgs,usermsgs;(mB)c.msgs,usermsgs,a.verbose;
Three.js:281 execThreeObjMethod: rotateZ(3.968100637147985)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(1.6495447725964547)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(4.418584782973118)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateX(3.144605511029693)
Three.js:332 sending return value to server...
Three.js:281 execThreeObjMethod: rotateZ(5.643491790380974)
Three.js:332 sending return value to server...
Console outputs. The summary document now lists all the AtomBuilder, AB2, AB3 and mBuilder console outputs along with Header and Index in 477 lines. Much easier to review. More correction is no doubt needed.  

Cr6 wrote. Unfortunately, we may have to go to a "Graph" database with this rather than a simple 2D matrix with a table.
Please recall I’ve stated that the dataframe’s slotlayout diagrams are not simple 2D matrices in a 90 element table. Given the nature of the data along with x, y and z coordinate information, our ‘Relational’ database is three dimensional data. I’ve agreed to a “Graph” database, but that doesn’t mean I know how it should or would work.

It is a whole re-engineering to a degree but it should allow more configurations with 3-D work.
How so? How would a graph database be useful in modeling atoms or molecules, or be used at all in this project? I agreed to a 'Graph' database without a proper understanding of what what a graph database is. It appears to me Graph databases create graph diagrams intended to display any and all simple or complex relationships between node objects, yet graph diagrams do not recreate real 3D structures. Unless the ‘Graph’ database includes its own 3D renderer, on a notebook, the 3D models will still need to be pythreejs renderings.

From a graph perspective (?), I suppose the lowest level nodes should be individual charge particles. Electrons, neutrons and protons.
Nodes: e, p, n.
Each individual particle needs a spin property as well as charge input and output ‘edges’ connecting that node to and from the space around the particle. Are 3D graphs possible, is the basic ‘charge particle recycling charge’ diagram a valid graph diagram?  If not, It should be.
Together,  the three e, p, and n nodes form a proton group. With edges between e, p, n particles: e-P, P-e, n-P, P-n, following the same AB3 T,B,R,L rules currently in place.  
I suppose the next higher level node should be the slot node, comprised of 1 to 6 proton groups again with internal T,B,R,L edges.
The next higher node might be the atomic node, consisting of up to 19 slot nodes in the atom's SL configuration.
That’s pretty much how I see nodes and edges might be be organized, pretty much the same as it is now. A question of how the build atom cell is organized.

How might you apply a graph database?  Do you want to add atomic or molecular relationships?

If so, what about Cytoscape?

“Cytoscape is an open source bioinformatics software platform for visualizing molecular interaction networks
and integrating with gene expression profiles and other state data.” https://en.wikipedia.org/wiki/Cytoscape

Cytoscape doesn’t appear among the 12 best considered in your solutionsreview link.
https://solutionsreview.com/data-management/the-best-graph-databases/
The 12 Best Graph Databases to Consider for 2022
Posted on December 22, 2021 by Timothy King in Best Practices

Nor is cytoscape listed among the top 23 at graph-database open-source projects at libhunt.com
https://www.libhunt.com/topic/graph-database
Doing a search at libhunt
https://www.libhunt.com/search?query=cytoscape
the top return is
Cytoscape.js.
Graph theory (network) library for visualisation and analysis.

Then there’s Ipycytoscape.
cytoscape/ipycytoscape
A widget enabling interactive graph visualization with cytoscape.js in JupyterLab and the Jupyter notebook.
https://github.com/cytoscape/ipycytoscape

Ipycytscape is a github project that may not work, but It’s free, and uses Pandas dataframes and json files. Well,  I’d a chance to update the project’s original ‘untouched’ json files.

I suppose ipycytoscape is not a database, it just creates network ‘visualizations’ that look like they were created by a graph database. As such I don’t believe one can properly ‘query’ data with ipycytoscape, but I don’t believe we need queries.

On the other hand cytoscape was designed with things like molecular interaction networks in mind, if not for recreating actual 3D models then at least for demonstrating atomic or molecular graph relationships.

Thanks for giving my imagination a good kick but I still don’t see how a graph database makes building molecules any easier.  I’d be happy to try and add functionality to the existing code. What am I missing?  
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Fri Sep 23, 2022 1:23 am

Yeah LTAM,

I know this is still just ideas this point about a Graph Database representation.
Good points:

LTAM wrote:From a graph perspective (?), I suppose the lowest level nodes should be individual charge particles. Electrons, neutrons and protons.
Nodes: e, p, n.
Each individual particle needs a spin property as well as charge input and output ‘edges’ connecting that node to and from the space around the particle. Are 3D graphs possible, is the basic ‘charge particle recycling charge’ diagram a valid graph diagram?  If not, It should be.
Together,  the three e, p, and n nodes form a proton group. With edges between e, p, n particles: e-P, P-e, n-P, P-n, following the same AB3 T,B,R,L rules currently in place.  
I suppose the next higher level node should be the slot node, comprised of 1 to 6 proton groups again with internal T,B,R,L edges.
The next higher node might be the atomic node, consisting of up to 19 slot nodes in the atom's SL configuration.
That’s pretty much how I see nodes and edges might be be organized, pretty much the same as it is now. A question of how the build atom cell is organized.

Frankly this needs to be represented as Vertices in a GraphDB?

The only thing that got me really thinking about this is that when it comes to "bonding" with the charge field -- essentially creating complex molecules, Graph databases may allow for easier algos with bonds. It may be trickier to do this with a 2-D table. Not that it couldn't be done in 2-D but the Graph database may allow for more coverage of calcs, especially since we are not on super powerful systems.  The question is if I throw a CO2 molecule at the algos in terms of Mathis' C.F. what would I need to calc with in-line D3.js versus a query against a graph database that could return a 2-D grid that could be represented with your cool (and formerly Nevyn's cool) rendering engine with D3.js? I'm thinking of ...just let the database calc the C.F. and then with the 2-D grid returned have it interactive? These are just thoughts at this point.   Your mention of Cytoscape is a definite contender for something to build with:  "Load and save previously-constructed interaction networks in GML format (Graph Modelling Language)".  Frankly I didn't know there was a GML until I looked up your above post.  This stuff, Graph DBs, can get trickier than it often needs to be with a lot of debugging required.  I just think if we go to converting traditional Molecular Bonding to Mathis' grid of bonding...we may need to look at Graph DBs (javascript maybe initially)...only because they can allow more expression of "Features" related to making bonds.  Initially I was thinking we could make a molecular converter for Traditional molecular notation to Graph-Mathis styles?  I know these ideas are like walking on light ice across a frozen lake but...we might make the other side with it.

A lot of the graphics with these Graph DBs is just showing Feature connections between circles...not 3-D representations of actual interactive "bonds". I've played a bit with TinkerPop and thought it might be cool to make a GraphDB for Mathis' C.F. with it -- like a converter system.

It seems like the guys that are doing Gene modeling need something similar with feature rich bonding, that can take a lot of conditional requirements, hence your mention of Cytoscape and ipycytoscape. It is definitely a massive programming effort to go this direction. Question essentially is where to place the bonding logic, in the app interface in-line, or in a query engine...and still keep it fast and true?

Just thought that GraphDBs could allow more representation of "AB3 T,B,R,L rules" between atoms essentially allowing for a GraphDB to produce "can these 2+ atoms bond?" early. We are talking "nodes and edges" with a GraphDB like with Cytoscape-- "Easily navigate large networks (100,000+ nodes and edges) by an efficient rendering engine."  This OrientDB got me thinking in this direction: https://github.com/orientechnologies/orientdb  https://www.tutorialspoint.com/orientdb/orientdb_python_interface.htm

They have an "emissions" jupyter notebooks: https://github.com/dritter-sap/orientdb-jupyter
https://github.com/IBM/graph-db-insights/blob/master/README.md (Hate to present extra over head with GraphDBs they are mind-game trying to get them functional for an app from what I've seen.)

https://www.kelvinlawrence.net/book/PracticalGremlin.html#whygraph

Shows some of the complexity using GraphDBs:
https://docs.janusgraph.org/schema/

Vid on OrientDB:
https://www.youtube.com/watch?v=kpLqfFGubKM
Vid on TigerGraph:
https://colab.research.google.com/drive/1fJpcv-q0NLfHj3X1k6Lbwddp8gVVcfES#scrollTo=kCaZh0DO3HNP
https://www.youtube.com/watch?v=NtNW2e8MfCQ
https://www.youtube.com/watch?v=2BcC3C-qfX4 <-- pyGraph demo
https://www.techtarget.com/searchbusinessanalytics/news/252520646/TigerGraph-unveils-new-tool-for-machine-learning-modeling

With a GraphDB it might be easier to say "Why do these three atoms bond?" but with typical def function logic it gets unwieldy to account for edge details like with:

" the three e, p, and n nodes form a proton group. With edges between e, p, n particles: e-P, P-e, n-P, P-n, following the same AB3 T,B,R,L rules currently in place."

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Tue Sep 27, 2022 4:17 pm

.
Some software reviewed:
Feel free to correct me. I lost my Neo4J notes somewhere.

TigerGraph Machine Learning Workbench looks good until - the free developer version may be “applied for”. Or one free service provided tigergraph scheme/solution can exist at any given time. https://info.tigergraph.com/ml-workbench-download

OrientDB – Requires an IBM Watson Studio cloud service provider.
https://github.com/orientechnologies/orientdb
Get insights from OrientDB database using PyOrient through IBM Data Science Experience (DSX)

D3.js. https://d3-graph-gallery.com/  D3.js is a javascript library that lets you build sexy 2D charts (or graphs) of data representational networks. The closest D3 gets to 3D appears to be the ridgeline type graph. https://d3-graph-gallery.com/ridgeline.html

TinkerPop. I have yet to learn a query language, SQL or NoSQL. The Gremlin graph traversal language seems simple enough. Is TinkerPoP a graphDB?

NetworkX. Next I considered the problem in terns of converting a pandas dataframe into a graphDB. It appears easy to do so with NetworkX. The graphs can be viewed with MatPlotLib, or made sexier with D3.js or GraphViz. Too good to be true?

Airman wrote:From a graph perspective (?), I suppose the lowest level nodes should be individual charge particles. Electrons, neutrons and protons...
Cr6 wrote. Frankly this needs to be represented as Vertices in a GraphDB?
Airman. I enjoyed the Vid on OrientDB. Liugi Dell’Aquila explains a graphDB well. Both he and the TinkerPop Gremlin referred to Graph Theory 101, Graph = (V,E), vertices and edges. TigerGraph describes vertexes as nodes. Vertices and nodes mean the same to me. In my e p n node description I was also assuming – perhaps incorrectly, that a graphDB would allow parent/child nested objects for expanding or collapsing graphs – something not easily done in table data.

For the record, I don’t believe we have system memory problems, but I can make some. If I had my charge-field druthers, the code would be very memory intensive. The smallest node would be a photon, with properties: position, radius, mass, velocity, direction, spin direction, spin velocity, etc. Each proton would consist of the equivalent of 6 billion recycling photons; but I don’t have a simple understanding of charge recycling within e, p, or n charge particles; imagining cyclonic motions of photons within nested spin doublings constantly recycling charge through the charged particle. I’m afraid I’ll stick to billiard ball spherical atomic particles for the time being. If I do manage to include photons, there could be plenty on the screen, but they can only be displayed outside (passing by, emerging from, disappearing into, or bouncing off) e, p, or n charge particle spherical surfaces.

Cr6 wrote. The only thing that got me really thinking about this is that when it comes to "bonding" with the charge field -- essentially creating complex molecules, Graph databases may allow ...
Airman. Cr6, granted. I agree, a graphDB would likely provide alternative coding possibilities that should, for example, make bonding solutions more direct and natural than when using Relational data tables. I’ve been stuck in a rut, anxious, and hoped for some needed discussion which you've kindly provided. Thanks.  

A blast from the past.

Post on this thread by Chromium6 Sun Jan 23, 2022 11:00 pm
Hi Guys,
I uploaded a slightly modified MathisPeriodicTable .csv with column header names changed so that works with Jupyter-Databricks:
mediafire.com … MathisPeriodicTable.csv

import pyspark
from pyspark.sql import SparkSession
from pyspark.sql.types import *
import pyspark.sql.functions as F ...
Airman.  A quick search shows Jupyter-Databricks is defined as an Apache Spark analytics platform, separate from the current graphDB reviews and discussion, but still something to keep in mind.

The best argument for using a graphDB is your larger MathisPeriodicTable.csv excel spreadsheet with 157 columns. You assembled a great deal of pertinent information that has not been included yet. At the time I was trying to learn pandas and said we would need separate interfaces for each of the data columns – many custom widgets. Oh, and Lithium is missing.

As I now see it, a graphDB (or ipycytoscape or networkX) graph network can allow each atomic vertex/node, or edge to contain most all those additional property data values, resulting in extremely feature-rich graphs. Maybe by adding a single additional graph interface, a widget or IPython display may allow interactive displays of all that additional data. Such an interface could be used to launch model selections as you have described. I suppose the current interactive Periodic table widget could be replaced with an expanded interactive graph diagram, one that might include a detailed display of the atom currently highlighted. Such an interface could allow access to most any of the 157 column data.

And another thing, as per our previous discussions, understandings and/or agreements, before we go throwing arbitrary molecules about, we’ll need to try incorporating machine learning. You’ll no doubt tell me ML is quicker and easier with feature rich data rather than many relational table data look-ups.  By then we should have a graph with ML capabilities.  

Cr6 you mentioned extensive coding. By that I take it to mean converting all the relational table data into graph data. Much as I’d like to, I’m clearly not making any progress on molecules front at present. I’d be more productive learning how to convert the .csv or pandas table data into graph form. I’ll see if I can create any graph versions of AtomBuilder3 starting with NetworkX.

Sound Ok to you?

Pretty please, could you make your larger, unmodified MathisPeriodicTable.csv file available again?
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Mon Oct 03, 2022 12:44 am

Sorry for delaying an update. I did more research on this. It looks like TinkerPop3 (open source and free) with TitanDB-JanusGraph (open source and free) has an importer that can be used for Vertexes and Edges .csv files.  We may be able to create edges for Slots and e-p protons with the larger file?  I'm leaning towards TinkerPop3 only because there are more examples available for programming with it. Neo4J is easier to use but limited unless you buy it.

LTAM wrote:I believe the following are all 8 possible e-p TB RL slot configuration types the program can now create.  Each type may come in any one of five, 2–6, e-p versions.

8 possible (e-p)/(e-p) bond types and each type’s 2-6 (e-p) proton configurations.

https://tinkerpop.incubator.apache.org/docs/3.0.1-incubating/#traversal

.csv importers:
https://github.com/vsantosu/gremlin-importer/wiki/CSV-import-guide
https://openbase.com/js/gremlin-importer/documentation

https://db-engines.com/en/system/TinkerGraph%3BTitan

Besides TitanDB-JanusGraph there is SageMath that has math libraries for Python-Jupyter notebooks.

https://github.com/thinkaurelius/titan/ (retired)
https://janusgraph.org/ (current updated titan version)

SageMath (has all libraries we might need and runs as a jupyter server)
https://github.com/sagemath/sage-windows/releases


Last edited by Chromium6 on Mon Oct 03, 2022 1:18 am; edited 3 times in total

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Mon Oct 03, 2022 12:59 am

Here are the Periodic Table files I shared previously:

https://www.mediafire.com/folder/7uqcs0d5l0cs0/Mathis

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Tue Oct 04, 2022 5:51 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Slgrap10
A SlotLayout level graph representation showing 19 slot nodes and 18 edges - the bonds between slots.

Code:

import networkx as nx
import matplotlib.pyplot as plt

G = nx.Graph()

G.add_nodes_from([
(1, {"slot_axis": "Z"}),
(2, {"slot_axis": "Y"}),
(3, {"slot_axis": "Y"}),
(4, {"slot_axis": "Z"}),
(5, {"slot_axis": "Z"}),
(6, {"slot_axis": "Y"}),
(7, {"slot_axis": "Y"}),
(8, {"slot_axis": "X"}),
(9, {"slot_axis": "X"}),
(10, {"slot_axis": "Z"}),
(11, {"slot_axis": "Z"}),
(12, {"slot_axis": "Z"}),
(13, {"slot_axis": "Z"}),
(14, {"slot_axis": "Y"}),
(15, {"slot_axis": "Y"}),
(16, {"slot_axis": "Z"}),
(17, {"slot_axis": "Z"}),
(18, {"slot_axis": "Z"}),
(19, {"slot_axis": "Z"}),
])

slot_edge_list = [(1, 2), (1, 3), (1, 6), (1, 7), (1, 8), (1, 9),
(2, 4), (2, 16), (2, 18), (3, 5), (3, 17), (3, 19),
(1, 9), (4, 14), (5, 15),
(6, 10), (7,12), (8, 11), (9, 13)]

G.add_edges_from(slot_edge_list)

nx.draw(G,with_labels=True)

plt.savefig("SLGraph2.png")

Cr6 wrote. Sorry for delaying an update. I did more research on this. … .
No problem, Cr6, except that I jumped right into networkx after my last post. Networkx.org provides a starter tutorial. I finished that and began building another tutorial from the documentation pdf.
https://networkx.org/documentation/stable/tutorial.html
https://networkx.org/documentation/latest/_downloads/networkx_reference.pdf
https://networkx.org/documentation/stable/auto_examples/index.html
Here’s a quote from near the top of the tutorial.
By definition, a Graph is a collection of nodes (vertices) along with identified pairs of nodes (called edges, links, etc). In NetworkX, nodes can be any hashable object e.g., a text string, an image, an XML object, another Graph, a customized node object, etc.
I’ve also watched additional networkx videos.

So far, networkx is much easier to learn than pandas.  The above graph diagram and code has 19 slot nodes, and 18 slot bonds indicated by edges. Of course the diagram is not intended to display an image of a real atom. Only a representation, of the relationships, properties and/or attributes – between slots and slot bonds.  
Cr6 wrote. We may be able to create edges for Slots and e-p protons with the larger file?
Not sure what you mean, it seems people design graphs in one of two forms, node-centric or edge-centric. I’m node centric, nodes are objects. Above is is a graph of the the slotlayout level. Each slotlayout level node is its own graph (or will be anyway) representing the 0-6 proton groups (a proton group is the lowest level e-p-n sub graph, also not yet included) contained in that slot. The lines kind of suggest and may be interpreted as charge channel bonds between slot centers.

As with the rest of the program, I’m essentially basing things on the slot layout diagram, not to imitate reality, but as a good starting point. The many many data attributes or properties in your larger csv file will add rich feature dimensionality to whatever level node or edge those properties are attached to.

You’d likely build an atomic graph differently, please share it if you do. As of yet, the only attribute included in the code so far is in the slotlayout graph shown, each node has a "slot_axis", property with X, Y or Z entries. The TBRL e-p-n position/spin rules may need to be node attributes of both the slotlayout and the slot level graphs. Edge attributes may include spins, positions and distances.

Cr6 wrote. I'm leaning towards TinkerPop3 only because there are more examples available for programming with it. Neo4J is easier to use but limited unless you buy it.
NetworkX appears rich in pre-built algorithmic graphs, but it may turn out to be deficient in its analytic capabilities – i.e. in identifying atomic bonding sites. Unless you have any objection or direction otherwise, I think I’ll continue playing with networkx for the time being.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Tue Oct 11, 2022 5:10 pm

.
Sorry Cr6, not much to report. I was able to find and follow along a few more pandas dataFrame/networkX examples.

https://networkx.org/documentation/stable/reference/convert.html
According to the book, (read "pandas" as "dataFrame") the preferred way of converting data to a NetworkX graph is through the graph constructor. The constructor calls the to_networkx_graph()  function which attempts to guess the input type and convert it automatically.

to_networkx_graph. ...Container (e.g. set, list, tuple) of edges iterator (e.g. itertools.chain) that produces edges generator of edges Pandas DataFrame (row per edge) 2D numpy array scipy sparse matrix pygraphviz agraph create_usingNetworkX graph constructor,...


For convenience, There seems to be two functions that are used to convert from a pandas dataFrame to a networkX graph.
1. from_pandas_adjacency
...from_pandas_adjacency from_pandas_adjacency(df, create_using=None)[source] Returns a graph from Pandas DataFrame. The Pandas DataFrame is interpreted as an adjacency matrix for the graph. Parameters: dfPandas DataFrameAn...
2. from_pandas_edgelist
...source='source', target='target', edge_attr=None, create_using=None, edge_key=None)[source] Returns a graph from Pandas DataFrame containing an edge list. The Pandas DataFrame should contain at least two columns of node names and zero or mo...
And two functions to convert from a networkX graph to a pandas dataFrame
1. to_pandas_adjacency
2. to_pandas_edgelist

As of yet, it still makes little sense. Although it now seems likely I’ll need to somehow restructure the atomic slot layout pandas datafame in order to conform with networkx’s node-to-node edge format.

Also I need to forget nesting nodes for the time being, if not longer.  No collapsing or expanding graphs. All the electrons, neutrons and protons for any given atom will be part of a single atom graph.

All’s well. I’ll keep at it.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Thu Oct 13, 2022 1:39 am


Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Fri Oct 14, 2022 7:50 pm

.
Thanks Cr6. I agree, that's a good recap. The 30,000 ft assessment including data silos. Some practical considerations intended to improve an enterprise mission’s success – how best to deal with data changes before they happen. I can mostly understand and appreciate the advice, and almost hear your voice Cr6. Thanks again for your guidance. If you gave more explicit detailed instructions I might be able to follow better. As it is, all things including ML taken into consideration - granted, a knowledge graph may well be the only way to go.

Since a knowledge graph is a more sophisticated form of network graph, I think I still need to learn simple network graphs first. That is, NetworkX. Between you and me I broke down and purchased an introductory study guide – Working with Networks in NetworkX. Registering the purchase should have entitled me to a free copy of all the files used in the book, but the registration direction is out of date and I stopped short of purchasing an electronic copy. They do a good job at explaining the easy stuff, better than the documentation. So far so good concentrating on networkX's built-in karate club function data. I expect missing files will likely prevent me from working through the whole book, less than 180 pages. Hopefully I’ll understand the networkX documentation better by then too. Shouldn’t take too long.  We may or may not want to end up with a networkX version of the project, but if we did I’d consider that good progress. Maybe then attempting the more complicated knowledge graph will make more sense.

That’s just the sort of thing your source advises against, locking in some sort of data structure that eventually needs changing which greatly complicates things in the long run. Choose you data wisely. At best, redirecting enterprises delays any possible success, etc. but I don’t think the sort of zig zagging efforts your source advises against is necessarily a problem for us. Unfortunately or not, this is a learning process. Given my level of knowledge and ability I’d say the time and effort spent in remodeling a project again and again is a good thing - refinement. Take your pick. For example, Pandas was a great addition, allowing even more possible changes to the project and in no way a waste of time, nor does it necessarily lead to a knowledge graph.

Please let me know if my overall lack of progress and general lackadaisical attitude has caused you any grief.
lol!  
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Sun Oct 16, 2022 6:15 pm

I uploaded a file that I was using for "data-shaping" Mathis' slots to atoms-molecules. Was going to use it as a file to work with. It isn't perfect but has enough there to use for modeling (50,000 rows) at 15 mbs:

https://www.mediafire.com/file/nhsmhpqcdxtq12g/MathisAtomsSlots.csv/file

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Tue Oct 18, 2022 4:29 pm

.
Cr6, My God man, a fifty thousand and one line, 16,343 KB csv file. Many, many molecular configurations. Your vision is beyond me. At some point I think it would be best for you to describe exactly how you think a proper charge field molecular knowledge graph should be designed.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Affkar10
The “Zachery karate club” is a famous social network data set *. The club president, the instructor and pupils end up breaking into two rival clubs. Networkx includes that data as a built-in algorithm (along with many others) used as a convenient intro example in working with networkx. The wiki link below shows the expected two club network. In the image above the original data, (#) nodes and (#,#) edges have been converted to two types of nodes: 1. # ; and 2. (#,#), and new unlabeled edges have been added in order to create an “affiliation graph”. Heck if I know what an affiliation graph actually is yet.

*   https://en.wikipedia.org/wiki/Zachary%27s_karate_club

I’m currently beginning chapter 6 of 11 in the NetworkX book I purchased, available electronically at github for free. Basically if you like the electronic copy, please purchase the book. Oops, the title I posted last time was actually the chapter title I was in at the time. The book has all the explanatory text, there’s little to no text explaining the dense code examples in the web site’s ipynb Notebook files. So, no problem, as the book suggests, I’ve made local copies of the txt or tcv node and edge files and example data sets. Only a few left to do. I don’t copy/paste the ipynb files, I type my own including notes from the book. Whenever I encounter problems running the code, I compare my copy, the book and the electronic file/s. That seems like a fair arrangement to me after all.

Since the thread has begun a new page.

The charge field Atom Builder Periodic Table etc. Jupyter Notebook project can be found at

https://github.com/LtAirman/ChargeFieldTopics
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Thu Oct 20, 2022 12:50 am

Actually, I forgot to include a comma on that query.  I have the AlphaType as Slot1 instead of Slot1 and AlphaType separate.

Here's an update MathisAtoms2.csv. This isn't perfect but should look better if loaded to a database or Pandas:

https://www.mediafire.com/file/dblk8aoiayisf9x/MathisAtoms2.csv/file

Edges and Nodes files:

https://www.mediafire.com/file/coz9voca6it0vz0/MathisEdges.csv/file
https://www.mediafire.com/file/koynhobwwu88lhl/MathisNodes.csv/file

GEXF file that works in Gephi 0.9.7:
https://www.mediafire.com/file/jrki4r044xs2jke/MathisElements.gexf/file

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Wed Oct 26, 2022 1:50 am

I have a .pdf export of Beryllium from gephi. Had to get a bunch of plugins to get it to work. May need to zoom a lot to see details. Still working on this:

https://www.mediafire.com/file/vaj3fdm39x1qz4h/beryllium_export_gephi.pdf/file

I'm going to try and get this imported into OrientDB via a graphml export from Gephi:

https://orientdb.org/docs/3.1.x/console/Console-Command-Import.html

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Wed Oct 26, 2022 6:52 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Bismut10
The same old current slotset (dataframe) format. The details for Bismuth, 83. The columns are packed too tight to read the labels: SlotNumber, Protons, PX, PY, PZ, P2P3, P12, PE, Neutrons, N1, N2, N3, N4, N5, N6, Electrons, SlotOrien, SlotSpin, CanBind, SlotLayout, SL1, SL2, SL3, SL4, AtomicSlotGrp.

Code:

import networkx as nx

from matplotlib import pyplot as plt
%matplotlib inline

"""
G = nx.Graph()

G.add_nodes_from([
(S1, {"slot_axis": "Z"}),
(S2, {"slot_axis": "Y"}),
(S3, {"slot_axis": "Y"}),
(S4, {"slot_axis": "Z"}),
(S5, {"slot_axis": "Z"}),
(S6, {"slot_axis": "Y"}),
(S7, {"slot_axis": "Y"}),
(S8, {"slot_axis": "X"}),
(S9, {"slot_axis": "X"}),
(S10, {"slot_axis": "Z"}),
(S11, {"slot_axis": "Z"}),
(S12, {"slot_axis": "Z"}),
(S13, {"slot_axis": "Z"}),
(S14, {"slot_axis": "Y"}),
(S15, {"slot_axis": "Y"}),
(S16, {"slot_axis": "Z"}),
(S17, {"slot_axis": "Z"}),
(S18, {"slot_axis": "Z"}),
(S19, {"slot_axis": "Z"}),
])

slot_edge_list = [(S1, S2), (S1, S3), (S1, S6), (S1, S7), (S1, S8), (S1, S9),
(S2, s4), (S2, s16), (S2, S18), (S3, S5), (S3, S17), (S3, S19),
(S1, S9), (S4, S14), (S5, S15), (S6, S10), (s7, S12), (S8, S11), (S9, S13)]

G.add_edges_from(slot_edge_list)

nx.draw(G,with_labels=True)

plt.savefig("SLGraph2.png")
"""

# 19 Slot labels.
# slLabels = ['S1','S2','S3','S4','S5','S6','S7','S8','S9',
#    'S10','S11','S12','S13','S14','S15','S16','S17','S18','S19']
#
# A list of up to 19 slot graphs per single atom
# [G_S1,G_S2,G_S3,G_S4,G_S5,G_S6,G_S7,G_S8,G_S9,G_S10,G_S11,G_S12,
#    G_S13,G_S14,G_S15,G_S16,G_S17,G_S18,G_S19]

"""
# Load data file into network
from pathlib import Path
data_dir = Path('.') / 'data'
G = nx.Graph()
with open(data_dir / ' ') as f:
"""

G_atom = nx.Graph()
total_slots = 0
atom_number = 0
for i in range(len(slotlistA)):
    if slotlistA[i] > 0 :
        #for range()
        total_slots += 1
        atom_number += slotlistA[i]
        #G_atom.add_node(i+1)
        G_atom.add_node(slLabels[i])
        #print(slotlistA[i])

#print(total_slots)
#print(atom_number)

#nx.draw(G_atom, pos=nx.spring_layout(G_atom), with_labels=True)
#nx.draw(G_atom, pos=nx.kamada_kawai_layout(G_atom), with_labels=True)
#nx.draw(G_atom, pos=nx.planar_layout(G_atom), with_labels=True)
#nx.draw(G_atom, pos=nx.random_layout(G_atom), with_labels=True)
nx.draw(G_atom, pos=nx.shell_layout(G_atom), with_labels=True)
Mishmash starting code. At present the output is 17 nodes, labeled S1-S17, in a circle.

Began working with a new file Ab3Nx.ipynb, by adding a few new Networkx code cells to a copy of AtomBuilder3 after the rotation controls. No formal git commit changes yet.

Still need to make it through the book. Progress was halted in the next to last chapter. Reading a csv file caused an error in both the book and electronic file. Looking further, I saw the csv had a formatting problem. Each row’s 4 columns of data was turned into a single column string by putting the row inside quotes(“ ”). So I cleaned that up easily enough then hit another error in the next cell. I’ll try finishing the book by next week.

Also looking at what appears to be an interesting example, that is, if the required “clubs.csv”, etc. or substitue data is available. https://jonathansoma.com/lede/algorithms-2017/classes/networks/networkx-graphs-from-source-target-dataframe/

Definitely a strong csv vibe today.

MathisAtoms2.csv. The 50,001 rows and up to 86 columns.  Many multi-atom compounds(?). Most of the data indicates NULL. I don’t understand how its organized other than to say it appears that the atomic element ‘s 19 slot rows appear to be collapsed into an atom’s number of active slot rows – usually less than the total possible 19 slots.

MathisEdges.csv. 359,897, or roughly 600^2 directed edges with columns: Source, Target, Type, Id, Label, timeset, Weight. The Label and timeset columns are blank. Edges between all active slots(?)

MathisNodes.csv. 608 nodes.  With columns: Id, Label, timeset. The timeset column is empty. 607*608 = 369,056, a little larger than MathisEdges. Perhaps indicating a "complete graph where all nodes connect to all other nodes.

Cr6, You seem comfortable working with all kinds of python notebook packages. These three files look like a good first stab at building a molecular graph. Have you succeeded yet? No guarantees but I’ll try building a graph from your nodes and edges lists. May need to remove or convert some data first, like removing the unused ‘timeset’ columns from both files, and ‘Labels’ may need string quotes.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Thu Oct 27, 2022 12:15 am

Chromium6 wrote:Actually, I forgot to include a comma on that query.  I have the AlphaType as Slot1 instead of Slot1 and AlphaType separate.

Here's an update MathisAtoms2.csv. This isn't perfect but should look better if loaded to a database or Pandas:

https://www.mediafire.com/file/dblk8aoiayisf9x/MathisAtoms2.csv/file

Edges and Nodes files:

https://www.mediafire.com/file/coz9voca6it0vz0/MathisEdges.csv/file
https://www.mediafire.com/file/koynhobwwu88lhl/MathisNodes.csv/file

GEXF file that works in Gephi 0.9.7:
https://www.mediafire.com/file/jrki4r044xs2jke/MathisElements.gexf/file

Hi LTAM,

I can't say it is something I'm really proud of at the moment. It is something I was trying to get setup in Gephi in order to load into OrientDB so that I can start to build queries in graph syntax for binding atoms with slots.  MathisAtoms2.csv was for trying to get atoms loaded up and then Full Join them with the Edges/Nodes files. Essentially I was looking at building up a Periodic Table that could be queried using graph syntax, so that atoms could be joined. It is a stab at looking at Slot bonding with graph syntax. OrientDB can be indexed so that it can be ran a lot faster.  This can be done in traditional SQL.  There are still a lot of slot rules to apply for making proper structures per Mathis of course. I may just try to do the node/edge files in a SQL Server 2019 graph database which can use the Match() operator to form atomic bonds by slot type-slot number.  Really just experimenting at this point.  Syntax for SQL Server Graph databases:
https://www.red-gate.com/simple-talk/databases/sql-server/t-sql-programming-sql-server/sql-server-2019-graph-database-and-shortest_path/

Was also looking at using Edge constraints for only allowing proper Mathis style slot bonding: https://learn.microsoft.com/en-us/sql/relational-databases/tables/graph-edge-constraints?view=sql-server-2019
https://learn.microsoft.com/en-us/sql/relational-databases/graphs/sql-graph-sample?source=recommendations&view=sql-server-ver16
A more complex example in SQL Server 2019: https://medium.com/swlh/how-to-make-use-of-sql-server-graph-database-features-946ce38190cc

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Sat Oct 29, 2022 11:00 pm

Hi LTAM,

I'm looking GNNs with a Graph Library for Miles' layouts with the Charge Field. Looks like there are several Python style libraries out there already for traditional bonding theory kGCN (python) :

https://neptune.ai/blog/graph-neural-networks-libraries-tools-learning-resources
https://github.com/clinfo/kGCN
https://github.com/deepmind/graph_nets
https://github.com/danielegrattarola/spektral
https://graphneural.network/getting-started/
Graph Theory for Bonding
https://www.maa.org/external_archive/joma/Volume8/Burch/Research.html


From: Could graph neural networks learn better molecular representation for drug discovery? A comparison study of descriptor-based and graph-based models
https://jcheminf.biomedcentral.com/articles/10.1186/s13321-020-00479-8
Miles Periodic Table with Standard Periodic Table reference - Page 5 13321_2020_479_Fig1_HTML

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Tue Nov 01, 2022 5:07 pm

.
Cr6 wrote.  I'm looking GNNs with a Graph Library for Miles' layouts with the Charge Field. Looks like there are several Python style libraries out there already for traditional bonding theory kGCN (python):
Airman. Sounds encouraging Cr6, and even that last diagram looks promising.

Cr6 wrote.  https://neptune.ai/blog/graph-neural-networks-libraries-tools-learning-resources
Airman. Good reference. The author provides plenty of good subject matter overview, descriptions, recommendations and resources available for further information or study. My pick of the four available python GNN’s (Only four eh?) would be PyTorch Geometric followed by Spektral. Both mention 3D. I see PyTorch is an available python library.  

Cr6 wrote.  https://github.com/clinfo/kGCN
Airman. Most of the formal math is above my head. I see an r-kgc is available. Like most things, it would require work and effort to learn.

Cr6 wrote.  https://github.com/deepmind/graph_nets
Airman. I see DeepMind includes Demo Jupyter Notebook examples.

Cr6 wrote.  https://github.com/danielegrattarola/spektral
https://graphneural.network/getting-started/
Airman.  https://graphneural.network/ Welcome to Spektral

Cr6 wrote.  Graph Theory for Bonding
https://www.maa.org/external_archive/joma/Volume8/Burch/Research.html
Airman. https://www.maa.org/external_archive/joma/Volume8/Burch/index.html
Yikes, An Introduction to Chemical Graph Theory. Is a specialized network graph as good as a knowledge graph? I’ve yet to install java – necessary in order to see figures 1, 4, and 6. I’ll need to review it further. Nevyn convinced me that the charge field has pretty much out-dated all the old chemistry stuff. Seems like there’s some irony involved in embracing chemistry for this project.

All in all, a bit overwhelming for one sitting.

Feel free to make command decisions, you know the drill, constraints and goal. Will it work with our data free of charge on Jupyter Notebook? Perhaps given an existing chemical library Can we convert the app’s “traditional bond” graph model methods to charge field atomic slot bonds? How do we add your additional atomic data? I don’t see a problem building from (a copy of ) AtomBuilder3 such as by adding networkx or GNN app. I can always add, delete or rebuild gui’s as needed, please let me know if you see otherwise.

And my favorite, a 3D capability, in hopes that it might provide a possible alternative for viewing molecular charged matter, much as chemistry has always depicted matter – symbolically.

Sorry to repeat myself, I’m still occupied with networkx and have yet to code an atomic graph. It is making more sense. Routinely checking the documentation has also helped. That book I’ve been working at is in limbo, the code errors while reading the final chapter’s data file. I’ll need to correct the data file or code or swap out the source data file to complete the chapter before I can truly say I finished “the book”.  

Customizing NetworkX Graphs.  
https://towardsdatascience.com/customizing-networkx-graphs-f80b4e69bedf
A noteworthy networkx code article I’ve read since last time. Old story, good until the end. A lack of edgelist data prevents the reader from re-creating the author’s final network diagram. The author provided ID[] and Type[] lists, but the edgelist is absent and needs to be re-created by hand - eyeballing the final diagram.

Code:

# Create data directory path and read edgelist.edgelist
from pathlib import Path
data_dir = Path('.') / 'data'
G = nx.read_edgelist(str(data_dir / 'MathisEdgelist2.edgelist'), delimiter=',')

# Draw network
pos = nx.shell_layout(G)  # Too dense to see
# pos = nx.circular_layout(G)  # Too dense to see
# pos = nx.planar_layout(G)  # NetworkXException: G is not planar.
#nx.draw_networkx(G, pos)
nx.draw_networkx(G, pos, node_size=1, width=0)
plt.gca().margins(0.15, 0.15)

MathisEdges.csv as MathisEdgelist.edgelist. Speaking of edgelists, I loaded your 360 thousand edgelist file after after removing the first row – containing the column labels, and changing the filetype from .csv to .edgelist, now a simple text file, and identifying the comma ( ‘,’ ) as the data delimiter.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Mnodes10
No surprise, 360 thousand internal edges make the network output look like an eight ball without the eight (at left), a shaved relation of the dreaded hairball. Re-ran the draw() command with 0 width lines (the default is 1) and made the tiny nodes even tinier (from 10 to1) and added the resulting output (at right). The 600 or so nodes align as several loops (I haven’t counted them) created by the networkx shell_layout method. I see the aligned nodes as a slightly tilted or off-center slinky rather than a properly centered spiraling layout. It would take more plot-work to resolve such details.  

My main complaint. My main complaint about networkx and graphs in general has always been, why are they just two dimensional? Aren’t there 3D graphs out there? So I googled ‘3D graphs with NetworkX’. The top response is
matplotlib. (Yes but does it do continuous rotations?)
import matplotlib.pyplot as plt
https://networkx.org/documentation/stable/auto_examples/3d_drawing/plot_basic.html
Mayavi. And mayavi is another available 3D python package that can work with networkX.
https://networkx.org/documentation/stable/auto_examples/3d_drawing/mayavi2_spring.html
What about rotation? I have little reason to complain. Learn matplotlib 3D plotting or mayavi or something else. Just import as needed, like any other python library/package.

But then, the top video seemed worth a look,
3D graphs with NetworkX, VTK, and ParaView - Alex Razoumov - May 24, 2016  
https://www.youtube.com/watch?v=BsK_WwoSKDM
WestGrid Visualization Webinars
3D visualization for the humanities
https://training.westdri.ca/materials/dhsi.pdf
As Alex Razoumov explains, people like 2D graphs, they don’t know what they’re missing. The many 2D graph option networks are designed so as to minimize or prevent nodes or edges from being obscured. One can usually see the entire 2D graph network in a single view.  That is not true with a 3D graph, where one must be able to move and rotate the graph before seeing the entire network. Given that limitation and understanding, we need better 3D graph alternatives.
I found the video and pdf very informative. VTK is an open source 3D visualization toolkit. Another available python package. So I was able to re-create several of the video’s script examples with Jupyter Notebook, and slowly followed along ... .
Code:

# After
import networkx as nx
# Try fun new code like
dir(nx)
# Which outputs a large number of neworkx methods and attributes.
# Or generate a much shorter list of just the built-in graph layouts
# using “list-comprehension”, no less.
[x for x in dir(nx) if ’_layout’ in x]
# And the ever welcome.
help(nx.spring_layout)
Networkx layout graphs include a list of all nodes along with the node positions, x and y and in some cases z. The third dimension capability was initially added, but hasn't been developed. Our atomic data frame also includes x, y and z slot positions that could be used to create a new 2D network layout file, based on the current slotlayout design or as a projection of the current x, y and z positions onto the x-y plane.
I didn’t go completely nuts as I don’t have ParaView, apparenttly a serious tool used for viewing large 3D datasets prominently featured in the WestGrid video. ParaView is a free 3D visualization app – not yet installed, – but available python package that I suppose can replicate e-p-n node graphs and provide an alternative to pythreejs as the 3D matter renderer of choice.
https://www.paraview.org
The only downside - ParaView is a rather complex and dedicated work environment,  I suppose something like autocad, requiring a long learning curve. Which may or may not be suitable for the casual user running a netbook file cell or gui.  

P.S. Failed to catch your previous to last post concerning "edge constraints" and SQL on my first go round but I'm enjoying it now.
.


Last edited by LongtimeAirman on Tue Nov 01, 2022 9:25 pm; edited 1 time in total (Reason for editing : Added P.S.)

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Wed Nov 02, 2022 1:37 am

Yeah LTAM,

Gephi has a Hairball buster plug-in:

Gephi wrote:
Hairball Buster
Version: 0.9.3 Source: Gephi Thirdparties Plugins  
Plugin Description
Hairball Buster (HB) (also called node-neighbor centrality or NNC) is an approach to graph analytic triage that uses simple calculations and visualization to quickly understand and compare graphs. Rather than displaying highly interconnected graphs as `hairballs' that are difficult to understand, HB provides a simple standard visual representation of a graph and its metrics.

Trying to play around with the various plug-ins (ForceGraph 3D might work) to get a more decent layout. Also, I wanted to try to get this ready for an import into a Graph Database, either Microsoft SQL or OrientDB with the proper child nodes for a good Networkx type layout that you are looking at. There might be tool outside of script to help build a Networkx layout in 2-D decently.  If you use Gephi, which isn't bad, don't forget to run "Preview" and then "Refresh" with the plug-ins. I think Networkx is a good choice for a notebook and clear Node-Edge relationships. In some ways, what tool to use to get a good rendering with Miles' slot layout rules. They can kind of be coded with SQL or Python loops...like these atoms can only bind on these other atoms using these Slot rules-Protons-Neutrons and x, y, z layouts. I know the 3-D and C.F. factors are in play. Handcoding this looks challenging. Querying a couple of million rows with filters in a database isn't that hard - I might add x,y,z entries from .001 to .359 or something like this to calc a pre-defined layout for each molecule. I know you have used calcs for this dynamically but I was looking at just hard coding the whole thing in a big graph database for the slot layouts. You can have Nodes for x, y, z with edges to each atom.

Paraview.org looks really cool and ultimately what we need to aim for but we don't have HPCs for high end computing 3-D molecules in the browser...this may be a ways off. There is TRAME-VTK which your links let me see which looks really cool in the browser with Paraview-Kitware.  https://www.kitware.com/trame-visual-analytics-everywhere/
https://kitware.github.io/trame/

Here's Nevyn's old renderer link if people are new here. I'm using this sort of to look at rules for slot-alignments (and Miles' papers):  http://www.users.on.net/~Nevyn/science/physics/PeriodicTable/
https://thehonestscientist.com/miles-mathis/

Miles Periodic Table with Standard Periodic Table reference - Page 5 Radial10

Looks like a full-time job to get more 3-D with this in various renderers. geek  Your work LTAM and Nevyn's and Dragon Face's in making interactive experiences with Miles' work is impressive.

Looking to get molecules in a graph database that Gephi or another tool can query with filters and have the edges-nodes layout somewhat faithfully with Miles -- it will be a lot of work but I think it can be done. I can post my SQL Server database that I used to get the Nodes/Edges if you like. It is like 500MBs. Still coding the rules for it. Was just trying to get something on screen at this point. I'm going to try and get the node colors right for r,g,b values at first so I can see them. It will likely be round nodes connecting at first.

Strangely looking around at this brought me back to Lloyd's old post:  Very Happy
https://milesmathis.forumotion.com/t19-lloyd-s-questions-for-miles-mathis#107

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Fri Nov 04, 2022 10:32 pm

.
Cr6 wrote. Gephi has a Hairball buster plug-in:
Airman. Amazing, not like any old thing we imagine we might have come up with first. What will they think of next?

Cr6 wrote. Trying to play around with the various plug-ins (ForceGraph 3D might work) to get a more decent layout. Also, I wanted to try to get this ready for an import into a Graph Database, either Microsoft SQL or OrientDB with the proper child nodes for a good Networkx type layout that you are looking at. There might be tool outside of script to help build a Networkx layout in 2-D decently.  If you use Gephi, which isn't bad, don't forget to run "Preview" and then "Refresh" with the plug-ins. I think Networkx is a good choice for a notebook and clear Node-Edge relationships.
Airman. Sounds like you’ve got a plan and are up for the task Cr6. What a wide array of python libraries, packages and plug-ins to choose from. I’d likely muddle along, but with no guarantees. I’m no software engineer, just ask Nevyn. Given my actual degree work, experience and more than a few years of brief encounters with various codes as a alternative hobby, I might qualify for entry into a lenient long-term s/w engineering program. No brag, still being new to notebook, python, this project and the rest I've likely made some rookie mistakes that will eventually need improvement. Glad you approve of networkx, seems friendly enough, I’ll try studying it harder. I’m certain I’ll also be looking at Gephi and a graph database here before too long. Glad you’re pushing the graph database angle.

Cr6 wrote. In some ways, what tool to use to get a good rendering with Miles' slot layout rules. They can kind of be coded with SQL or Python loops...like these atoms can only bind on these other atoms using these Slot rules-Protons-Neutrons and x, y, z layouts. I know the 3-D and C.F. factors are in play. Handcoding this looks challenging. Querying a couple of million rows with filters in a database isn't that hard - I might add x,y,z entries from .001 to .359 or something like this to calc a pre-defined layout for each molecule.
Airman. I’d say the charge bonds between atoms are very much the same as the charge bonds between the slots inside larger atoms. With one caveat I’ve not yet included in the 3D rendered models; while one may refer to bonds between internal adjacent proton stacks, all bonds between adjacent stacks can only exist between two individual protons, one from each atom, aligned either pole-to-pole (parallel) at slot ends, or pole-to-edge (orthogonally) when a slot end meets the other slots’s center or near center proton.  Shorter stacks may tend to bond by creating longer proton stacks (up to 6) according to TBRL parallel proton bonding rules. Longer slots tend to bond orthodonally at one atom’s slot end to the the adjacent atom’s adjacent slot center or near center proton.  

Handcoding rules like that isn’t all that difficult with pandas either. Its my understanding that given such rules, a graph database might be better able to magically identify all possible bonding sites for any given atom.  

Youre last sentence threw me. 360 degrees of x,y,z positions(?) For 360 possible viewing angles? It’s got to be easier finding all an atom’s x y and z particle positions then using a math transform to project those x y and z positions onto an arbitrary x-y plane.

Cr6 wrote. I know you have used calcs for this dynamically but I was looking at just hard coding the whole thing in a big graph database for the slot layouts.
Airman. “for the slot layouts”? By slot layouts do you mean the 2 or 3D version? Each occupied slot’s proton stack center x y and z position are hard coded in columns (PX,PY,PZ). That may be all you need to create the atoms’ 2D graph slot layouts.

You’re right, the PX PY and PZ hard-coded ‘default’ values aren’t used as such, they merely used by the program to identify the proper sign value for each slots’ +/-x, +/-y and +/-z, positional (sign) direction w.r.t. the 0,0,0 atomic center. The PX PY and PZ numerical values as well as all the e-p-n position coordinates within each slot are dynamically calculated whenever the Build Atom notebook cell is run.

By charge field rules, an atom’s true 3D form follows the 3D slot layout configuration - up-to-19 proton stacks of 1-6 (e-p-n)s, each slot orthogonal to the next. As opposed to the 2D version, when viewed in 3D there’s no confusion as to any slots’ x y and z position and orientation.

We currently display an atom in either a 2D slot layout configuration or full atom including all e-p-n’s, the pythreejs rendered view. It’s my understanding that graphs can be easily varied as needed, hence my belief that our atomic graph should be viewable as a single node, and expandable to 2 or 3D graphs including a full and accurately positioned e p n nodes.

Or do you want to hard code each and every atom’s full set of e p n particle positions? If memory’s not a problem, I’’m all for that. Given the existing data frame and notebook script, wherever the code adds new e, p, or n particles to a slot, all we’d need to do is add code that saves those calculated particle position values as new dataframe particle positional data. The only problem, as you’re no doubt aware, the number of data cells containing the x y and z position values grows quite large.

Helium, one proton stack with PX, PY, PZ, or 3 values.
2 px, 2 py and 2 pz  # 2 proton centers, 6 values
2 nx, 2 ny and 2 nz  # 2 neutron centers, 6 values
2 ex, 2 ey and 2 ez  # 2 electron centers, 6 values
3+18, a total of 21 positional values.

Tin, 50, with slotlist: [4,4,4,4,4,4,4,4,4,2,2,2,2,1,1,0,0,2,2]
17 occupied slot sets of PX PY PZ, 51 stack centers’ positional values plus
[(4*9)+(2*6)+2]  = 50 px, 50 py and 50 pz  # 150 proton centers, same for the neutron and electron centers. I’m probably off by a few neutrons.
450 e-p-n position values plus 51 PX PY PZ for a total of
501 positional data values for Tin.

Thorium, 90. [6, 6, 6, 6, 6, 6, 6, 6, 6, 5, 5, 5, 5, 5, 5, 2, 2, 1, 1]
19 occupied slot sets of PX PY PZ, a total of 57 values and
90 px, 90 py and 90 pz  # 270 proton centers, same for the neutron and electron centers.
270*3 + 57 =  867 positional data values for Thorium. Many of which equal zero.

We’re just talking about hard coding positions and not spins. While I may have requested rotate-able 3D graphs, each atomic graph would rotate as a single static model, at least for starters anyway. Can a graph network display an atom’s up to 40 groups of spinning and contra-spinning slots?  

Given the existing atomic data frame and notebook code, we may be able to obtain all 90 element’s 3D positional data as easily as running a function called calcSlotParticePositions(a,j) for any or all of the 90 element data frame’s 1710 slot/rows containing at least 1 proton. In other words, we can identify all the needed positions with dataframe operations. I imagine queries come later. You’re welcome to exercise your coding skills, or I’d be happy to oblige. Just give it some thought and say the word.

Cr6 wrote. You can have Nodes for x, y, z with edges to each atom.
Airman. I think we agree. Please pardon my long winded repetitive pendantics. - it helps keep me organized. An atom has one center location. Not counting the hook positions, the atom may have up to six separate potential bonding locations at each of the atom’s +/-x,+/-y, +/-z slot layout proton stack extremities. Initial bonds are usually along the z axis, allowing carousel spinning, in 3D matter, all an atom’s potential bonding sites may be bonded, connected by a graph two-way charge field ‘edge’ to an adjacent atom’s well aligned complementary proton node’s edge sharing extremity. Whew. I could say more, I’ll leave it at that.

Cr6 wrote. Paraview.org looks really cool and ultimately what we need to aim for but we don't have HPCs for high end computing 3-D molecules in the browser...this may be a ways off. There is TRAME-VTK which your links let me see which looks really cool in the browser with Paraview-Kitware.  https://www.kitware.com/trame-visual-analytics-everywhere/
https://kitware.github.io/trame/
Airman. Believe it or not, I do find this effort extremely satisfying.

Cr6 wrote. Here's Nevyn's old renderer link if people are new here. I'm using this sort of to look at rules for slot-alignments (and Miles' papers):
http://www.users.on.net/~Nevyn/science/physics/PeriodicTable/
https://thehonestscientist.com/miles-mathis/
Airman. Thanks Cr6, I don’t remember ever seeing the site with Nevyn’s Atomic Viewer and periodic table even though I was the one that asked Nevyn if he could make the table. And Wheeler’s end-over-end gif, I would have pulled out this link resource for my recent discussion of wave motion with Lloyd if I’d knew where to find it. I'll be sure to save it this time. Nor do I recall ever having seen the honest scientist link with. Now you know why I need to keep repeating things to myself.

Cr6 wrote. Looks like a full-time job to get more 3-D with this in various renderers.   Your work LTAM and Nevyn's and Dragon Face's in making interactive experiences with Miles' work is impressive.
Airman. I’m happy to be in such fine company Cr6. Seems like your diabolical plans may come to fruition.  

Cr6 wrote. Looking to get molecules in a graph database that Gephi or another tool can query with filters and have the edges-nodes layout somewhat faithfully with Miles -- it will be a lot of work but I think it can be done. I can post my SQL Server database that I used to get the Nodes/Edges if you like. It is like 500MBs. Still coding the rules for it. Was just trying to get something on screen at this point. I'm going to try and get the node colors right for r,g,b values at first so I can see them. It will likely be round nodes connecting at first.
Airman. I'm optimistic too, but a 500MBs SQL database!?! Scares the begebus outta me.

Cr6 wrote. Strangely looking around at this brought me back to Lloyd's old post:  
https://milesmathis.forumotion.com/t19-lloyd-s-questions-for-miles-mathis#107
Airman. Maybe the universe is shaped like a sideways 8.  Question
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Tue Nov 08, 2022 2:27 am


Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Tue Nov 08, 2022 5:38 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Thoriu11
Thorium, 90, centered at (0,0,0), the top is in +z direction.  Intended to clarify the orientations of the 3D slotlayout proton equatorial emission planes. Each of the atom’s 19 slots’ 3D coordinates are stored in the (PX,PY,PZ) columns of that particular slot row. A stack is created at (0,0,0) with protons spinning right or left spin with z plane equatorial emissions. The slot stack’s up to 6 epn’s may or may not need to be rotated to emit in either the x or y planes before repositioning that slot to its (PX,PY,PZ) coordinate location.  

Happy Election Day Cr6! Ok, if you want all the atomic sub particle (x, y, z) positional data hard-coded without all the muss and fuss of queries, the least I should do is provide as much of that data to you as I can. It’ll take some doing. Putting networkx aside for the time being.  

My current goal is to write all the sub atomic particle (x, y, z) positions along with their associated gui setting values to an output dataframe. That dataframe could then be used to add and update the source data in an expanded Cr6-Elements.csv. Much easier for a datbase user. The program may then allow user saved settings.

The first few steps are working. Added a new Elements-Positions.csv dataframe file to the data folder, an expanded Cr6-Elements csv file with 19 new columns. “N1N2”, a gui variable neutron pair separation distance; and 18 new columns for the up to 6 proton positions (x,y,z) per stack – p1x,p1y,p1z,p2x, … ,p5z,p6x,p6y,p6z. The program copies the desired atom’s expanded data to the program’s working dataframe slotsetA_df. Code been added declaring the new data as float values, and a column counting index needed changing to accommodate the 19 new data columns.  Those changes have been committed and pushed to github. *
Code:


# Assemble the atomic models.
for i in range( 19 ):
    if slotsetA_df.loc[i+1,('Protons')] > 0 :  
        numPs = slotsetA_df.loc[i+1,('Protons')]
        buildProStackM(numPs,i)    
        Orient(i,stacksA[i])
        Orient(i,stacksB[i])
        Position(i,stacksA[i])
        Position(i,stacksB[i])

        # Write to the dataframe.
        # These three lines write the current PX PY PZ values to the default locations.
        slotsetA_df.loc[i+1,('PX')] = round(stacksA[i].position[0], 4)
        slotsetA_df.loc[i+1,('PY')] = round(stacksA[i].position[1], 4)
        slotsetA_df.loc[i+1,('PZ')] = round(stacksA[i].position[2], 4)          
        # Writes the current PE, P12 and P2P3 values the dataframe the default locations.
        slotsetA_df.loc[i+1,('PE')] = round(p1e1,4)   # Make PE the proton electron z sep dist.
        slotsetA_df.loc[i+1,('P12')] = round(p12,4) # Ortho proton separation
        slotsetA_df.loc[i+1,('P2P3')] = round(p2p3,4) # Parallel proton separation
        slotsetA_df.loc[i+1,('N1N2')] = round(n1n2,4) # Neutron orbital sep dist    
        
        anSlots=[5,6,7,8,9,10,11,12] # index#=slot-1        
        if i in anSlots:      
            grpA1.add(stacksA[i])
            grpA1.add(stacksB[i])
        else:
            grpA2.add(stacksA[i])
            grpA2.add(stacksB[i])  
        
print(An) # (' 2 helium He ', 2)
print(slotlistA)
The code shown is from the bottom of the Build Atom cell. I’ve added the  # Write to the dataframe block of code which writes the gui variable pE, p12, p2p3, and new n1n2 values used to build the atom selected. The code also overwrites the PX,PY,PZ data in the data frame. All seems to be working correctly so far. Later I’ll consolidate all the write statements into a separate function.

I know what the up to 6 proton stack positions along the z axis. I’ve yet to figure out how to obtain and write the proper z emission plane p1-p6 stack positions after the stack is rotated to either x or y directions. Maybe I don’t need any special rotation transformations, I might get away with just switching the order of the component  px, py, and pz data.

Back to cytoscape.org I see.

*
For the record, I suffered some high anxiety yesterday when my SourceTree app – what I use to post any code changes to the project repository at github - stopped working. I shut down and restarted my computer, no joy, sourcetree would not open. I thought I needed to remove and reinstall it. After a brief search: “Source tree not starting in windows 10”,  I found Atlassian team support at
https://community.atlassian.com/t5/Sourcetree-questions/Source-tree-not-starting-in-windows-10/qaq-p/1023302
indicating that “Sourcetree.exe is actually located in the %localappdata%/Sourcetree folder, See if you can launch Sourcetree from there”. I did and it did and it was a great relief. I replaced sourcetree’s desktop shortcut icon and it works perfectly again.

P.S. Corrected code typo, adding slotsetA_df. to the n1n2 line.
.


Last edited by LongtimeAirman on Tue Nov 08, 2022 6:19 pm; edited 1 time in total (Reason for editing : Added P.S.)

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Wed Nov 09, 2022 3:30 am

LongtimeAirman wrote:.
Thorium, 90, centered at (0,0,0), the top is in +z direction.  Intended to clarify the orientations of the 3D slotlayout proton equatorial emission planes. Each of the atom’s 19 slots’ 3D coordinates are stored in the (PX,PY,PZ) columns of that particular slot row. A stack is created at (0,0,0) with protons spinning right or left spin with z plane equatorial emissions. The slot stack’s up to 6 epn’s may or may not need to be rotated to emit in either the x or y planes before repositioning that slot to its (PX,PY,PZ) coordinate location.  

Happy Election Day Cr6! Ok, if you want all the atomic sub particle (x, y, z) positional data hard-coded without all the muss and fuss of queries, the least I should do is provide as much of that data to you as I can. It’ll take some doing. Putting networkx aside for the time being.  

My current goal is to write all the sub atomic particle (x, y, z) positions along with their associated gui setting values to an output dataframe. That dataframe could then be used to add and update the source data in an expanded Cr6-Elements.csv. Much easier for a datbase user. The program may then allow user saved settings.

The first few steps are working. Added a new Elements-Positions.csv dataframe file to the data folder, an expanded Cr6-Elements csv file with 19 new columns. “N1N2”, a gui variable neutron pair separation distance; and 18 new columns for the up to 6 proton positions (x,y,z) per stack – p1x,p1y,p1z,p2x, … ,p5z,p6x,p6y,p6z. The program copies the desired atom’s expanded data to the program’s working dataframe slotsetA_df. Code been added declaring the new data as float values, and a column counting index needed changing to accommodate the 19 new data columns.  Those changes have been committed and pushed to github. *
Code:


# Assemble the atomic models.
for i in range( 19 ):
    if slotsetA_df.loc[i+1,('Protons')] > 0 :  
        numPs = slotsetA_df.loc[i+1,('Protons')]
        buildProStackM(numPs,i)    
        Orient(i,stacksA[i])
        Orient(i,stacksB[i])
        Position(i,stacksA[i])
        Position(i,stacksB[i])

        # Write to the dataframe.
        # These three lines write the current PX PY PZ values to the default locations.
        slotsetA_df.loc[i+1,('PX')] = round(stacksA[i].position[0], 4)
        slotsetA_df.loc[i+1,('PY')] = round(stacksA[i].position[1], 4)
        slotsetA_df.loc[i+1,('PZ')] = round(stacksA[i].position[2], 4)          
        # Writes the current PE, P12 and P2P3 values the dataframe the default locations.
        slotsetA_df.loc[i+1,('PE')] = round(p1e1,4)   # Make PE the proton electron z sep dist.
        slotsetA_df.loc[i+1,('P12')] = round(p12,4) # Ortho proton separation
        slotsetA_df.loc[i+1,('P2P3')] = round(p2p3,4) # Parallel proton separation
        slotsetA_df.loc[i+1,('N1N2')] = round(n1n2,4) # Neutron orbital sep dist    
        
        anSlots=[5,6,7,8,9,10,11,12] # index#=slot-1        
        if i in anSlots:      
            grpA1.add(stacksA[i])
            grpA1.add(stacksB[i])
        else:
            grpA2.add(stacksA[i])
            grpA2.add(stacksB[i])  
        
print(An) # (' 2 helium He ', 2)
print(slotlistA)
The code shown is from the bottom of the Build Atom cell. I’ve added the  # Write to the dataframe block of code which writes the gui variable pE, p12, p2p3, and new n1n2 values used to build the atom selected. The code also overwrites the PX,PY,PZ data in the data frame. All seems to be working correctly so far. Later I’ll consolidate all the write statements into a separate function.

I know what the up to 6 proton stack positions along the z axis. I’ve yet to figure out how to obtain and write the proper z emission plane p1-p6 stack positions after the stack is rotated to either x or y directions. Maybe I don’t need any special rotation transformations, I might get away with just switching the order of the component  px, py, and pz data.

Back to cytoscape.org I see.

*
For the record, I suffered some high anxiety yesterday when my SourceTree app – what I use to post any code changes to the project repository at github - stopped working. I shut down and restarted my computer, no joy, sourcetree would not open. I thought I needed to remove and reinstall it. After a brief search: “Source tree not starting in windows 10”,  I found Atlassian team support at
https://community.atlassian.com/t5/Sourcetree-questions/Source-tree-not-starting-in-windows-10/qaq-p/1023302
indicating that “Sourcetree.exe is actually located in the %localappdata%/Sourcetree folder, See if you can launch Sourcetree from there”. I did and it did and it was a great relief. I replaced sourcetree’s desktop shortcut icon and it works perfectly again.

P.S. Corrected code typo, adding slotsetA_df. to the n1n2 line.
.

Thanks LTAM! I'll try to get your PX, PY, PZ coordinates in a long table (graph edge array) and link it to nodes. I'm just thinking it might be easier than to calc this all on the fly if references are kept incrementally small. Querying a extremely long graph column (millions of rows) is pretty quick actually with the right setup. While looking around even more I saw this library for the Periodic. Looks more advanced than I expected:
https://mendeleev.readthedocs.io/en/stable/
This table at some later date could be useful for proving Miles' bonding (Pandas friendly):
https://mendeleev.readthedocs.io/en/stable/notebooks/bulk_data_access.html
The kGCN mentioned earlier is using mendeleev in the background. Just to make something like this Miles' friendly.
https://github.com/clinfo/kGCN

Sorry to hear about “Source tree not starting in windows 10” Shocked Ouch...hope they show a work around for it. I've had corrupted databases before and know the feeling of "can I get this back?" uggh.

This is a great idea and code. I'll try to use it:

LTAM wrote:The first few steps are working. Added a new Elements-Positions.csv dataframe file to the data folder, an expanded Cr6-Elements csv file with 19 new columns. “N1N2”, a gui variable neutron pair separation distance; and 18 new columns for the up to 6 proton positions (x,y,z) per stack – p1x,p1y,p1z,p2x, … ,p5z,p6x,p6y,p6z. The program copies the desired atom’s expanded data to the program’s working dataframe slotsetA_df. Code been added declaring the new data as float values, and a column counting index needed changing to accommodate the 19 new data columns.  Those changes have been committed and pushed to github. *

BTW, I've been looking at Nevyn's old Atomic Viewer and was adding elements to it for Slot alignments. Didn't realize it had that functionality. Smile
Miles Periodic Table with Standard Periodic Table reference - Page 5 Crbrv10




Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Sat Nov 12, 2022 11:38 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Hgpart10
80, Hg, mercury’s slotsetA_df data frame including all proton, neutron and electron e-p-n (x,y,z) positional data. Not yet verified, likely containing many errors.  

Cr6, your Atomic Viewer 0.7 image of chromium, beryllium and vanadium is an excellent surprise. More evidence you must have some serious coding skills in your repertoire.

All my free time has been devoted to adding the code to write positional data onto the Elements-Positions slotsetA_df dataframe. Beside the fun that always accompanies trying to code rotations, I also had fun creating an atomic sub particle slot dictionary with numerical keys that made it act like a well ordered list.

Code:
"""
Rotates and returns a tuple (x, y, z) of the
three x, y, z positions and spin axis angle entered.  
ax, ay or az are angles in radians about the three
x y and z cubic spin axes through (0,0,0).
"""
def rotateStackAbtX(x, y, z, ax):
    rotatedX = x
    rotatedY = (y * cos(ax)) - (z * sin(ax))
    rotatedZ = (y * sin(ax)) + (z * cos(ax))
    x, y, z = rotatedX, rotatedY, rotatedZ    
    return(rotatedX, rotatedY, rotatedZ )

def rotateStackAbtY(x, y, z, ay):
    rotatedX = (x * sin(ay)) + (y * cos(ay))
    rotatedY = y
    rotatedZ = (x * cos(ay)) - (y * sin(ay))
    x, y, z = rotatedX, rotatedY, rotatedZ    
    return(rotatedX, rotatedY, rotatedZ )

def rotateStackAbtZ(x, y, z, az):
    rotatedX = (x * cos(az)) - (y * sin(az))
    rotatedY = (x * sin(az)) + (y * cos(az))
    rotatedZ = z
    x, y, z = rotatedX, rotatedY, rotatedZ    
    return(rotatedX, rotatedY, rotatedZ )

"""
# Example use.
X = -1
Y = -1
Z = 0
ax = pi/2
X, Y, Z = rotateStackAbtX(X, Y, Z, ax)
#X,Y,Z
X = round(X,4)
Y = round(Y,4)
Z = round(Z,4)
X,Y,Z  
# (1, -0.0, -1.0) zero has a sign

# Ex 2. Rotating x and y randomly about the z axis
X = 1
Y = 1
Z = -10
az  = random()*piG
X, Y, Z = rotateStackAbtZ(X, Y, Z, az)
#X,Y,Z
X = round(X,4)
Y = round(Y,4)
Z = round(Z,4)
X,Y,Z, az
#(-1.3262, 0.4911, -10, 2.0015613640360197)
# The z value is not changed by the z axis rotation.
""";
Three rotation functions.

Positioning protons, neutrons and electrons within an atom requires just the three ax ay az ortho rotations.
az in order to randomize neutron and electron orbital positions about the proton's initial, usual z spin axis. The e-p-n unit all share the same spin axis, centered on the proton's center on the main z axis channel. The neutrons and electrons are offset from the main z axis channel. Same as the threejs model. That’s why all the neutron and electron positions include all three x y z coordinate values,

ax and ay are used to rotate the particles within a slot about the slot's center from the slot's initial z to a possible y or x spin axis orientation. So I decided to make three rotation functions instead of one.

Code:
# Identify and write all positional data.
for i in range( 19 ):
    if slotsetA_df.loc[i+1,('Protons')] > 0 :  
        numPs = slotsetA_df.loc[i+1,('Protons')]
        # Work in Progress
        # These three lines write the current PX PY PZ values to the default locations.
        slotsetA_df.loc[i+1,('PX')] = round(stacksA[i].position[0], 4)
        slotsetA_df.loc[i+1,('PY')] = round(stacksA[i].position[1], 4)
        slotsetA_df.loc[i+1,('PZ')] = round(stacksA[i].position[2], 4)          
        # Writes the current PE, P12 and P2P3 values the dataframe the default locations.
        slotsetA_df.loc[i+1,('PE')] = round(p1e1,4)   # Make PE the proton electron z sep dist.
        slotsetA_df.loc[i+1,('P12')] = round(p12,4) # Ortho proton separation
        slotsetA_df.loc[i+1,('P2P3')] = round(p2p3,4) # Parallel proton separation
        slotsetA_df.loc[i+1,('N1N2')] = round(n1n2,4) # Neutron orbital sep dist    
        """
        The 54 up-to-6 epn positions in a given stack are calculated in the
        buildProStackM(a,j) function just before each e p and n is added to the stack.
        At this point, that data is gone. The following section recreates it here.
        """
        # Each slot row's z-position is relative to the slot's PX,PY,PZ coordinate.
        # Calculate the z-positions for all possible 1-6 protons in the stack.
        if numPs == 1 : pPositions = [0]
        if numPs == 2 : pPositions = [p2p3/2,-p2p3/2]
        if numPs == 3 : pPositions = [0,-p2p3, p2p3]
        if numPs == 4 : pPositions = [p2p3/2,-p2p3/2,3*p2p3/2,-3*p2p3/2]
        if numPs == 5 : pPositions = [0,-p2p3,p2p3,-2*p2p3,2*p2p3]        
        if numPs == 6 : pPositions = [p2p3/2,-p2p3/2,3*p2p3/2,-3*p2p3/2,5*p2p3/2,-5*p2p3/2]          

        # Column heading numbers intended as pointers.
        # These might also be tuples.
        proXColList = [7, 10, 13, 16, 19, 22]
        neuXColList = [33, 36, 39, 42, 45, 48]
        eleXColList = [52, 55, 58, 61, 64, 67]
        proYColList = [8, 11, 14, 17, 20, 23]
        neuYColList = [34, 37, 40, 43, 46, 49]
        eleYColList = [53, 56, 59, 62, 65, 68]
        proZColList = [9, 12, 15, 18, 21, 24]
        neuZColList = [35, 38, 41, 44, 47, 50]
        eleZColList = [54, 57, 60, 63, 66, 69]

        # This loop identifies the proton positions wrt the slot center
        for k in range(numPs) :
            # Each k is another epn set, up to 6 per slot.
            slotPartList = {1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0}
            
            slotPartList[3] = round(pPositions[k], 4)          
            Zp = slotPartList[3]

            # Add the electron and neutron z-axis distances.
            if slotsetA_df.loc[i+1,('Electrons')] == "T" :            
                Ze = p1e1 # Top electron
                Zn = -p2p3/2            
            else :
                Ze = -p1e1 # Bottom electron
                Zn = p2p3/2            
            
            Xe = n1n2/10  # Distance to the z-axis charge channel
            Xn = n1n2  
            Ye = 0
            Zn = 0
            # Give e's and n's random spins about the slot's z-axis,
            az = random()*pi/2
            Xe,Ye,Ze = rotateStackAbtZ(Xe, Ye, Ze, az)
            Xe = round(Xe,4)  
            Ye = round(Ye,4)            
            # Ze and Zn remain the same
            Xn,Yn,Zn = rotateStackAbtZ(Xe, Ye, Ze, az)
            Xn = round(Xn,4)  
            Yn = round(Yn,4)  
            
            # Now reorient the slots spin-axis from z to x
            # or y about the slot center, (PX,PY,PZ)
            Xs = slotsetA_df.loc[i+1,('PX')]
            Ys = slotsetA_df.loc[i+1,('PY')]
            Zs = slotsetA_df.loc[i+1,('PZ')]
            
            # x, y and z values w.r.t. PX,PY,PZ
            exdelta = Xe - Xs
            eydelta = Ye - Ys
            ezdelta = Ze - Zs
            pxdelta = Xp - Xs
            pydelta = Yp - Ys
            pzdelta = Zp - Zs
            nxdelta = Xn - Xs
            nydelta = Yn - Ys
            nzdelta = Zn - Zs

            if slotsetA_df.loc[i+1,('SlotOrien')] == "X" :
                ay = pi/2                
                Xe,Ye,Ze = rotateStackAbtY(exdelta, eydelta, ezdelta, ay)              
                Xn,Yn,Zn = rotateStackAbtY(nxdelta, nydelta, nzdelta, ay)
                Xp,Yp,Zp = rotateStackAbtY(pxdelta, pydelta, pzdelta, ay)              
  
            elif slotsetA_df.loc[i+1,('SlotOrien')] == "Y" :            
                ax = -pi/2                
                Xe,Ye,Ze = rotateStackAbtY(exdelta, eydelta, ezdelta, ax)              
                Xn,Yn,Zn = rotateStackAbtY(nxdelta, nydelta, nzdelta, ax)
                Xp,Yp,Zp = rotateStackAbtY(pxdelta, pydelta, pzdelta, ax)
            
            # Keep all numbers output to a
            Xp = round(Xp,4)
            slotPartList[1] = Xp
            Yp = round(Yp,4)            
            slotPartList[2] = Yp              
            Zp = round(Zp,4)            
            slotPartList[3] = Zp
            Xe = round(Xe,4)
            slotPartList[4] = Xe
            Ye = round(Ye,4)            
            slotPartList[5] = Ye            
            Ze = round(Ze,4)              
            slotPartList[6] = Ze
            Xn = round(Xn,4)  
            slotPartList[7] = Xn
            Yn = round(Yn,4)              
            slotPartList[8] = Yn  
            Zn = round(Zn,4)  
            slotPartList[9] = Zn            

            for m in range(9):
                if abs(slotPartList[m+1]) < .00001 :
                    slotPartList[m+1] = 0.0
            
            # Proton's x coord
            pxindex = proXColList[k]
            slotsetA_df.iloc[i,pxindex] = slotPartList[1]
            # Proton's y coord
            pyindex = proYColList[k]
            slotsetA_df.iloc[i,pyindex] = slotPartList[2]
            # Proton's z coord
            pzindex = proZColList[k]
            slotsetA_df.iloc[i,pzindex] = slotPartList[3]
            # electron's x coord# Yeah!, Temporary, Boo!
            exindex = eleXColList[k]
            slotsetA_df.iloc[i,exindex] = slotPartList[4]
            # electron's y coord
            eyindex = eleYColList[k]
            slotsetA_df.iloc[i,eyindex] = slotPartList[5]
            # electron's z coord
            ezindex = eleZColList[k]
            slotsetA_df.iloc[i,ezindex] = slotPartList[6]
            # neutron's x coord
            nxindex = neuXColList[k]
            slotsetA_df.iloc[i,nxindex] = slotPartList[7]
            # neutron's y coord
            nyindex = neuYColList[k]
            slotsetA_df.iloc[i,nyindex] = slotPartList[8]
            # neutron's z coord
            nzindex = neuZColList[k]
            slotsetA_df.iloc[i,nzindex] = slotPartList[9]            
        #print(slotPartList)
        
slotsetA_df.to_csv("Elements-PositionsX.csv") # Working
The code generating the positional data.

Unfortunately, all the sin and cos zero values were slightly off - temporarily sticking with the old pi for float number cleaner zero sake(?). Given phi based pi, I guess the trig tables need to be rebuilt.

The current output shown above for Hg doesn't look entirely correct; slots' 2 and 3,  6 each proton positions appear to be missing. I'll do some verification including attempting to build an atom from the data frame's positional data.

There are plenty of sources out there for help with rotations. I’ll cite the two I used:
http://www.euclideanspace.com/maths/discrete/groups/categorise/finite/cube/index.htm
https://inventwithpython.com/bigbookpython/project62.html
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Tue Nov 15, 2022 2:01 am

Found this tool which makes laying out the Node-Edges a lot easier. Still working with it. It is called yEd. I'm going to try and build up the layouts with this over using graphml which is too basic for rules/alignments.

https://www.yworks.com/products/yed/download#download

Miles Periodic Table with Standard Periodic Table reference - Page 5 Mathis10


Last edited by Chromium6 on Fri Nov 25, 2022 10:16 pm; edited 1 time in total

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Nov 17, 2022 5:11 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Frthre10
Work in progress. Francium, 87. The 4 top images show 18 green points properly positioned at each of francium's 18 occupied slot center coordinates, slot 19 is empty. This indicates the PX PY and PZ values are good.

The bottom 4 images however show some problems positioning francium’s 87 proton positions.

As any programmer might tell you, the best way to realise the limitations in one’s thinking is by attempting to program the idea, then trying to understand the result. Another problem immediately became clear. How the heck do I find the problem? Sure, one usually begins by paring everything down to the bare minimum, make that work and build from there, but using a threejs rendered view for identifying improper particle positions is extremely impractical.

Matplotlib’s 3D plotting capability is the answer for properly displaying the data.  Aside from many matplotlib plotting examples in say pandas or numpy tutorials, this is the first time I’ve ever needed to use it. That took more than a couple of days, but I’m grateful for that. The code creates an interactive 3D plot which has been cropped in the image above to bring the eight axial and orthographic images closer together.

Code:

# slotsetA_df

#totalProtonListX = []
allPXs = []
allPYs = []
allPZs = []

currentP = 0
previousPs = 0    
""" The 3 totalProton dicts above will be indexed w currentP.
currentP, value: 1-An. (atomic number). The current proton
positions being written.
previousPs, value: 1-(An-1). Equal to the proton totals of
all the previous slot rows' 'Protons' column.
"""
  
slotPartList = {1:0,2:0,3:0,4:0,5:0,6:0,7:0,8:0,9:0}
#Xp,Yp,Zp,Xe,Ye,Ze,Xn,Yn,Zn = 0  # Init all coords at zero.

proXColList = [7, 10, 13, 16, 19, 22]
neuXColList = [33, 36, 39, 42, 45, 48]
eleXColList = [52, 55, 58, 61, 64, 67]
proYColList = [8, 11, 14, 17, 20, 23]
neuYColList = [34, 37, 40, 43, 46, 49]
eleYColList = [53, 56, 59, 62, 65, 68]
proZColList = [9, 12, 15, 18, 21, 24]
neuZColList = [35, 38, 41, 44, 47, 50]
eleZColList = [54, 57, 60, 63, 66, 69]

# PX.PX,PZ contain the 1-19 SL slot center coords
# with respect to the atom's center at (0,0,0).
# Slot1's center coincides with the atom's center.  
slXlist = list(slotsetA_df.PX)
slYlist = list(slotsetA_df.PY)
slZlist = list(slotsetA_df.PZ)
# All electron and neutron positions must be added
# to the SL in order to build the atomic model

# For each slot
for j in range( 19 ):
    # if the slot is occupied
    if j == 0 : # There are no protons previous to the first slot
        previousPs = 0
    elif j == 1 :
        previousPs = slotsetA_df.loc[j,('Protons')]
    elif j > 1 :        
        previousPs = previousPs + slotsetA_df.loc[j,('Protons')]
        
    if slotsetA_df.loc[j+1,('Protons')] > 0 :  
        numPs = slotsetA_df.loc[j+1,('Protons')]
        # For each epn in that slot
        currentP = 0
        for k in range(numPs):
            if k == 0 :
                currentP = previousPs
                #print(currentP)
            elif k > 0:
                currentP = currentP + 1
                #print(currentP) # Looks good,
            #print(currentP) # Looks good.

            pXvalue = 0
            pYvalue = 0
            pZvalue = 0
            
            # Write the positions.
            # The kth of numpy protons position w.r.t. the slot.

            # Write the particle positions to the data frame.        
            # Proton's x coord
            pxindex = proXColList[k]
            slotsetA_df.iloc[i,pxindex] = slotPartList[1]
            # Proton's y coord
            pyindex = proYColList[k]
            slotsetA_df.iloc[i,pyindex] = slotPartList[2]
            # Proton's z coord
            pzindex = proZColList[k]
            slotsetA_df.iloc[i,pzindex] = slotPartList[3]
            # electron's x coord
            exindex = eleXColList[k]
            slotsetA_df.iloc[i,exindex] = slotPartList[4]
            # electron's y coord
            eyindex = eleYColList[k]
            slotsetA_df.iloc[i,eyindex] = slotPartList[5]
            # electron's z coord
            ezindex = eleZColList[k]
            slotsetA_df.iloc[i,ezindex] = slotPartList[6]
            # neutron's x coord
            nxindex = neuXColList[k]
            slotsetA_df.iloc[i,nxindex] = slotPartList[7]
            # neutron's y coord
            nyindex = neuYColList[k]
            slotsetA_df.iloc[i,nyindex] = slotPartList[8]
            # neutron's z coord
            nzindex = neuZColList[k]
            slotsetA_df.iloc[i,nzindex] = slotPartList[9]
            
            #pXvalue = slotsetA_df.loc[j+1,('PX')] # Good 3
            #pYvalue = slotsetA_df.loc[j+1,('PY')]
            #pZvalue = slotsetA_df.loc[j+1,('PZ')]

            #pXvalue = pXvalue + slotsetA_df.iloc[j+1,(proXColList[k])]
            #pYvalue = pYvalue + slotsetA_df.iloc[j+1,(proYColList[k])]
            # By itself, pZvalue looks good by itself.
            #pZvalue = pZvalue + slotsetA_df.iloc[j+1,(proZColList[k])]

            pXvalue = slotsetA_df.iloc[j,(proXColList[k])] + slotsetA_df.loc[j+1,('PX')]
            pYvalue = slotsetA_df.iloc[j,(proYColList[k])] + slotsetA_df.loc[j+1,('PY')]
            pZvalue = slotsetA_df.iloc[j,(proZColList[k])] + slotsetA_df.loc[j+1,('PZ')]
            
            #pXvalue = pXvalue + slotsetA_df.iloc[j,(proXColList[k])]
            #pYvalue = pXvalue + slotsetA_df.iloc[j,(proYColList[k])]
            #pZvalue = pXvalue + slotsetA_df.iloc[j,(proZColList[k])]  
            
            #pXvalue = slotsetA_df.iloc[j,(proXColList[k])]
            #pYvalue = slotsetA_df.iloc[j,(proYColList[k])]
            #pZvalue = slotsetA_df.iloc[j,(proZColList[k])]            
            
            #print(currentP,pXvalue,pYvalue,pZvalue)
            allPXs.append(pXvalue)
            allPYs.append(pYvalue)
            allPZs.append(pZvalue)          

#print(allPXs,allPYs,allPZs)
The code creating the matplotlib positional data.

Code:

import numpy as np
import matplotlib.pyplot as plt

%matplotlib notebook

fig = plt.figure(figsize=(5.0,5.0))
ax = plt.axes(projection='3d')

ax.scatter3D(allPXs,allPYs,allPZs, c='blue', cmap='Greens');
#ax.scatter3D(slXlist,slYlist,slZlist, c='green', cmap='Blues');

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')

ax.view_init(30,40)
The code for the 3D Interactive plot.

I can see you enjoy learning new libraries and functions too Cr6.

At home I’m looking at the much simpler Fluorine, F, 9. with 2 protons in Y aligned slot 3. Protons being built within a z aligned slot have only 1-6 different z values. The proton must be brought to (0,0,0) before it can be rotated. When re-aligning the initial z aligned slot to the x or y axis, the delta z values need to end up in the y or x directions centered on the slot. The problem’s in there somewhere. Forces me to understand rotations better. I hope there’s not many more rotation problems after that.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Fri Nov 18, 2022 3:04 am

Really cool and great perspectives on this LTAM!

I'm just trying to get layouts built up in yEd that can allow a "graph" ready structure with the 19 slots-protons to bond in 2-D style. Your epn layouts can be added to this later and hopefully allow for proper rendering after saying something like "show me sulfur 'bonding' with Mathis' slots to 2 oxygen molecules to make sulfur dioxide with classical bonding and Mathis style bonding. Miles has provided the new Periodic table but "bonding" rules are a bit more delicate. I'm trying to build up the Mathis elements with yEd then add them to a reference graph database that can provide relational bonding via either "match" functions or "links" between nearby slots that have a relatable match. Like Oxygen can "bond" with sulfur on these particular slots and directions-spins-protons due to these slot matches and have it still somewhat faithfully match with old "bonding" theory. This is the goal.

I agree Matplot which I think is somewhat based on Mathematica should be tool to investigate a 3-D landscape for "bonding" (or "Slotting" which I now prefer to call it...lol).

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Fri Nov 18, 2022 3:25 am

I might start playing with Spektral just because they have decent examples of "bonding":
-------
https://graphneural.network/datasets/

MoleculeNet: a benchmark for molecular machine learning
https://pubs.rsc.org/en/content/articlelanding/2018/sc/c7sc02664a

. Graph Neural Networks
Historically, the biggest difficulty for machine learning with molecules was the choice and computation of “descriptors”. Graph neural networks (GNNs) are a category of deep neural networks whose inputs are graphs and provide a way around the choice of descriptors. A GNN can take a molecule directly as input.

Audience & Objectives

This chapter builds on Standard Layers and Regression & Model Assessment. Although it is defined here, it would be good to be familiarize yourself with graphs/networks. After completing this chapter, you should be able to

Represent a molecule in a graph

Discuss and categorize common graph neural network architectures

Build a GNN and choose a read-out function for the type of labels

Distinguish between graph, edge, and node features

Formulate a GNN into edge-updates, node-updates, and aggregation steps

GNNs are specific layers that input a graph and output a graph. You can find reviews of GNNs in Dwivedi et al.[DJL+20], Bronstein et al.[BBL+17], and Wu et al.[WPC+20]. GNNs can be used for everything from coarse-grained molecular dynamics [LWC+20] to predicting NMR chemical shifts [YCW20] to modeling dynamics of solids [XFLW+19]. Before we dive too deep into them, we must first understand how a graph is represented in a computer and how molecules are converted into graphs.

You can find an interactive introductory article on graphs and graph neural networks at distill.pub [SLRPW21]. Most current research in GNNs is done with specialized deep learning libraries for graphs. As of 2022, the most common are PyTorch Geometric, Deep Graph library, DIG, Spektral, and TensorFlow GNNS.

8.1. Representing a Graph
A graph  is a set of nodes  and edges . In our setting, node  is defined by a vector
, so that the set of nodes can be written as a rank 2 tensor. The edges can be represented as an adjacency matrix , where if  then nodes  and  are connected by an edge. In many fields, graphs are often immediately simplified to be directed and acyclic, which simplifies things. Molecules are instead undirected and have cycles (rings). Thus, our adjacency matrices are always symmetric  because there is no concept of direction in chemical bonds. Often our edges themselves have features, so that  is itself a vector. Then the adjacency matrix becomes a rank 3 tensor. Examples of edge features might be covalent bond order or distance between two nodes.

../_images/methanol.jpg
Fig. 8.1 Methanol with atoms numbered so that we can convert it to a graph.

one-hot

Recall that a one-hot is a vector of all 0s and a single 1 - [0, 1, 0, 0]. The index of the non-zero element indictates the class. In this case, class is element.

Let’s see how a graph can be constructed from a molecule. Consider methanol, shown in Fig. 8.1. I’ve numbered the atoms so that we have an order for defining the nodes/edges. First, the node features. You can use anything for node features, but often we’ll begin with one-hot encoded feature vectors:

Node

will be the combined feature vectors of these nodes. The adjacency matrix  will look like:

Take a moment to understand these two. For example, notice that rows 1, 2, and 3 only have the 4th column as non-zero. That’s because atoms 1-3 are bonded only to carbon (atom 4). Also, the diagonal is always 0 because atoms cannot be bonded with themselves.

You can find a similar process for converting crystals into graphs in Xie et al. [XG18]. We’ll now begin with a function which can convert a smiles string into this representation.

8.2. Running This Notebook
Click the    above to launch this page as an interactive Google Colab. See details below on installing packages.

Tip



import matplotlib.pyplot as plt
import matplotlib as mpl
import numpy as np
import tensorflow as tf
import pandas as pd
import rdkit, rdkit.Chem, rdkit.Chem.rdDepictor, rdkit.Chem.Draw
import networkx as nx
import dmol
soldata = pd.read_csv(
   "https://github.com/whitead/dmol-book/raw/master/data/curated-solubility-dataset.csv"
)
np.random.seed(0)
my_elements = {6: "C", 8: "O", 1: "H"}
The hidden cell below defines our function smiles2graph. This creates one-hot node feature vectors for the element C, H, and O. It also creates an adjacency tensor with one-hot bond order being the feature vector.

Click to show
nodes, adj = smiles2graph("CO")
nodes
array([[1., 0., 0.],
      [0., 1., 0.],
      [0., 0., 1.],
      [0., 0., 1.],
      [0., 0., 1.],
      [0., 0., 1.]])
8.3. A Graph Neural Network
A graph neural network (GNN) is a neural network with two defining attributes:

Its input is a graph

Its output is permutation equivariant

We can understand clearly the first point. Here, a graph permutation means re-ordering our nodes. In our methanol example above, we could have easily made the carbon be atom 1 instead of atom 4. Our new adjacency matrix would then be: (graph)

A GNN is permutation equivariant if the output change the same way as these exchanges. If you are trying to model a per-atom quantity like partial charge or chemical shift, this is obviously essential. If you change the order of atoms input, you would expect the order of their partial charges to similarly change.

Often we want to model a whole-molecule property, like solubility or energy. This should be invariant to changing the order of the atoms. To make an equivariant model invariant, we use read-outs (defined below). See Input Data & Equivariances for a more detailed discussion of equivariance.
https://dmol.pub/dl/gnn.html

QM7
spektral.datasets.qm7.QM7()
The QM7b dataset of molecules from the paper:

MoleculeNet: A Benchmark for Molecular Machine Learning
Zhenqin Wu et al.

The dataset has no node features. Edges and edge features are obtained from the Coulomb matrices of the molecules.

Each graph has a 14-dimensional label for regression.



QM9
spektral.datasets.qm9.QM9(amount=None, n_jobs=1)

The QM9 chemical data set of small molecules.

In this dataset, nodes represent atoms and edges represent chemical bonds. There are 5 possible atom types (H, C, N, O, F) and 4 bond types (single, double, triple, aromatic).

Node features represent the chemical properties of each atom and include:

The atomic number, one-hot encoded;
The atom's position in the X, Y, and Z dimensions;
The atomic charge;
The mass difference from the monoisotope;
The edge features represent the type of chemical bond between two atoms, one-hot encoded.

Each graph has an 19-dimensional label for regression.

Arguments

amount: int, load this many molecules instead of the full dataset (useful for debugging).
n_jobs: number of CPU cores to use for reading the data (-1, to use all available cores).

https://github.com/danielegrattarola/spektral/blob/master/spektral/datasets/qm9.py#L17
https://github.com/deepchem/deepchem
https://moleculenet.org/

Apparently they have a lot of mapping problems because they don't use Miles' layouts. Even on very high performance hardware they are getting "crap" models (without the C.F.). I think we can definitely do better:

Submitted on 2 Mar 2017 (v1), last revised 26 Oct 2018 (this version, v3)

MoleculeNet: A Benchmark for Molecular Machine Learning

Zhenqin Wu, Bharath Ramsundar, Evan N. Feinberg, Joseph Gomes, Caleb Geniesse, Aneesh S. Pappu, Karl Leswing, Vijay Pande

Molecular machine learning has been maturing rapidly over the last few years. Improved methods and the presence of larger datasets have enabled machine learning algorithms to make increasingly accurate predictions about molecular properties. However, algorithmic progress has been limited due to the lack of a standard benchmark to compare the efficacy of proposed methods; most new algorithms are benchmarked on different datasets making it challenging to gauge the quality of proposed methods. This work introduces MoleculeNet, a large scale benchmark for molecular machine learning. MoleculeNet curates multiple public datasets, establishes metrics for evaluation, and offers high quality open-source implementations of multiple previously proposed molecular featurization and learning algorithms (released as part of the DeepChem open source library). MoleculeNet benchmarks demonstrate that learnable representations are powerful tools for molecular machine learning and broadly offer the best performance. However, this result comes with caveats. Learnable representations still struggle to deal with complex tasks under data scarcity and highly imbalanced classification. For quantum mechanical and biophysical datasets, the use of physics-aware featurizations can be more important than choice of particular learning algorithm.
 Shocked

https://arxiv.org/abs/1703.00564
https://arxiv.org/pdf/2008.12187.pdf


Last edited by Chromium6 on Tue Nov 22, 2022 2:25 am; edited 4 times in total

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Fri Nov 18, 2022 3:40 am

More hand coded "exceptions" from deepchem:
---------
Code:
-------
    atom_feat: np.ndarray
      Of shape `(N_atoms, N_atom_feat)`.
    pair_feat: np.ndarray
      Of shape `(N_pairs, N_pair_feat)`. Note that `N_pairs` will depend on
      the number of pairs being considered. If `max_pair_distance` is
      `None`, then this will be `N_atoms**2`. Else it will be the number
      of pairs within the specifed graph distance.
    pair_split: np.ndarray
      Of shape `(N_pairs,)`. The i-th entry in this array will tell you the
      originating atom for this pair (the "source"). Note that pairs are
      symmetric so for a pair `(a, b)`, both `a` and `b` will separately be
      sources at different points in this array.
    atom_split: np.ndarray
      Of shape `(N_atoms,)`. The i-th entry in this array will be the molecule
      with the i-th atom belongs to.
    atom_to_pair: np.ndarray
      Of shape `(N_pairs, 2)`. The i-th row in this array will be the array
      `[a, b]` if `(a, b)` is a pair to be considered. (Note by symmetry, this
      implies some other row will contain `[b, a]`.
    """
    atom_feat = []
    pair_feat = []
    atom_split = []
    atom_to_pair = []
    pair_split = []
    start = 0
    for im, mol in enumerate(X_b):
      n_atoms = mol.get_num_atoms()
      # pair_edges is of shape (2, N)
      pair_edges = mol.get_pair_edges()
      N_pairs = pair_edges[1]
      # number of atoms in each molecule
      atom_split.extend([im] * n_atoms)
      # index of pair features
      C0, C1 = np.meshgrid(np.arange(n_atoms), np.arange(n_atoms))
      atom_to_pair.append(pair_edges.T + start)
      # Get starting pair atoms
      pair_starts = pair_edges.T[:, 0]
      # number of pairs for each atom
      pair_split.extend(pair_starts + start)
      start = start + n_atoms

      # atom features
      atom_feat.append(mol.get_atom_features())
      # pair features
      pair_feat.append(mol.get_pair_features())

    return (np.concatenate(atom_feat, axis=0), np.concatenate(pair_feat,
                                                              axis=0),
            np.array(pair_split), np.array(atom_split),
            np.concatenate(atom_to_pair, axis=0))

  def default_generator(
      self,
      dataset: Dataset,
      epochs: int = 1,
      mode: str = 'fit',
      deterministic: bool = True,
      pad_batches: bool = True) -> Iterable[Tuple[List, List, List]]:
    """Convert a dataset into the tensors needed for learning.
    Parameters
    ----------
    dataset: `dc.data.Dataset`
      Dataset to convert
    epochs: int, optional (Default 1)
      Number of times to walk over `dataset`
    mode: str, optional (Default 'fit')
      Ignored in this implementation.
    deterministic: bool, optional (Default True)
      Whether the dataset should be walked in a deterministic fashion
    pad_batches: bool, optional (Default True)
      If true, each returned batch will have size `self.batch_size`.
    Returns
    -------
    Iterator which walks over the batches
    """

    for epoch in range(epochs):
      for (X_b, y_b, w_b,
           ids_b) in dataset.iterbatches(batch_size=self.batch_size,
                                         deterministic=deterministic,
                                         pad_batches=pad_batches):
        if y_b is not None:
          if self.mode == 'classification':
            y_b = to_one_hot(y_b.flatten(),
                             self.n_classes).reshape(-1, self.n_tasks,
                                                     self.n_classes)
        inputs = self.compute_features_on_batch(X_b)
        yield (inputs, [y_b], [w_b])


class DTNNModel(KerasModel):
  """Deep Tensor Neural Networks
  This class implements deep tensor neural networks as first defined in [1]_
  References
  ----------
  .. [1] Schütt, Kristof T., et al. "Quantum-chemical insights from deep
         tensor neural networks." Nature communications 8.1 (2017): 1-8.
  """

  def __init__(self,
               n_tasks,
               n_embedding=30,
               n_hidden=100,
               n_distance=100,
               distance_min=-1,
               distance_max=18,
               output_activation=True,
               mode="regression",
               dropout=0.0,
               **kwargs):
    """
    Parameters
    ----------
    n_tasks: int
      Number of tasks
    n_embedding: int, optional
      Number of features per atom.
    n_hidden: int, optional
      Number of features for each molecule after DTNNStep
    n_distance: int, optional
      granularity of distance matrix
      step size will be (distance_max-distance_min)/n_distance
    distance_min: float, optional
      minimum distance of atom pairs, default = -1 Angstorm
    distance_max: float, optional
      maximum distance of atom pairs, default = 18 Angstorm
    mode: str
      Only "regression" is currently supported.
    dropout: float
      the dropout probablity to use.
    """
    if mode not in ['regression']:
      raise ValueError("Only 'regression' mode is currently supported")
    self.n_tasks = n_tasks
    self.n_embedding = n_embedding
    self.n_hidden = n_hidden
    self.n_distance = n_distance
    self.distance_min = distance_min
    self.distance_max = distance_max
    self.step_size = (distance_max - distance_min) / n_distance
    self.steps = np.array(
        [distance_min + i * self.step_size for i in range(n_distance)])
    self.steps = np.expand_dims(self.steps, 0)
    self.output_activation = output_activation
    self.mode = mode
    self.dropout = dropout

    # Build the model.

    atom_number = Input(shape=tuple(), dtype=tf.int32)
    distance = Input(shape=(self.n_distance,))
    atom_membership = Input(shape=tuple(), dtype=tf.int32)
    distance_membership_i = Input(shape=tuple(), dtype=tf.int32)
    distance_membership_j = Input(shape=tuple(), dtype=tf.int32)

    dtnn_embedding = layers.DTNNEmbedding(
        n_embedding=self.n_embedding)(atom_number)
    if self.dropout > 0.0:
      dtnn_embedding = Dropout(rate=self.dropout)(dtnn_embedding)
    dtnn_layer1 = layers.DTNNStep(n_embedding=self.n_embedding,
                                  n_distance=self.n_distance)([
                                      dtnn_embedding, distance,
                                      distance_membership_i,
                                      distance_membership_j
                                  ])
    if self.dropout > 0.0:
      dtnn_layer1 = Dropout(rate=self.dropout)(dtnn_layer1)
    dtnn_layer2 = layers.DTNNStep(n_embedding=self.n_embedding,
                                  n_distance=self.n_distance)([
                                      dtnn_layer1, distance,
                                      distance_membership_i,
                                      distance_membership_j
                                  ])
    if self.dropout > 0.0:
      dtnn_layer2 = Dropout(rate=self.dropout)(dtnn_layer2)
    dtnn_gather = layers.DTNNGather(n_embedding=self.n_embedding,
                                    layer_sizes=[self.n_hidden],
                                    n_outputs=self.n_tasks,
                                    output_activation=self.output_activation)(
                                        [dtnn_layer2, atom_membership])
    if self.dropout > 0.0:
      dtnn_gather = Dropout(rate=self.dropout)(dtnn_gather)

    n_tasks = self.n_tasks
    output = Dense(n_tasks)(dtnn_gather)
    model = tf.keras.Model(inputs=[
        atom_number, distance, atom_membership, distance_membership_i,
        distance_membership_j
    ],
                           outputs=[output])
    super(DTNNModel, self).__init__(model, L2Loss(), **kwargs)

  def compute_features_on_batch(self, X_b):
    """Computes the values for different Feature Layers on given batch
    A tf.py_func wrapper is written around this when creating the
    input_fn for tf.Estimator
    """
    distance = []
    atom_membership = []
    distance_membership_i = []
    distance_membership_j = []
    num_atoms = list(map(sum, X_b.astype(bool)[:, :, 0]))
    atom_number = [
        np.round(
            np.power(2 * np.diag(X_b[i, _atoms[i], :num_atoms[i]]),
                     1 / 2.4)).astype(int) for i in range(len(num_atoms))
    ]
    start = 0
    for im, molecule in enumerate(atom_number):
      distance_matrix = np.outer(
          molecule, molecule) / X_b[im, _atoms[im], :num_atoms[im]]
      np.fill_diagonal(distance_matrix, -100)
      distance.append(np.expand_dims(distance_matrix.flatten(), 1))
      atom_membership.append([im] * num_atoms[im])
      membership = np.array([np.arange(num_atoms[im])] * num_atoms[im])
      membership_i = membership.flatten(order='F')
      membership_j = membership.flatten()
      distance_membership_i.append(membership_i + start)
      distance_membership_j.append(membership_j + start)
      start = start + num_atoms[im]

    atom_number = np.concatenate(atom_number).astype(np.int32)
    distance = np.concatenate(distance, axis=0)
    gaussian_dist = np.exp(-np.square(distance - self.steps) /
                           (2 * self.step_size**2))
    gaussian_dist = gaussian_dist.astype(np.float32)
    atom_mem = np.concatenate(atom_membership).astype(np.int32)
    dist_mem_i = np.concatenate(distance_membership_i).astype(np.int32)
    dist_mem_j = np.concatenate(distance_membership_j).astype(np.int32)

    features = [atom_number, gaussian_dist, atom_mem, dist_mem_i, dist_mem_j]

    return features

  def default_generator(self,
                        dataset,
                        epochs=1,
                        mode='fit',
                        deterministic=True,
                        pad_batches=True):
    for epoch in range(epochs):
      for (X_b, y_b, w_b,
           ids_b) in dataset.iterbatches(batch_size=self.batch_size,
                                         deterministic=deterministic,
                                         pad_batches=pad_batches):
        yield (self.compute_features_on_batch(X_b), [y_b], [w_b])


class DAGModel(KerasModel):
  """Directed Acyclic Graph models for molecular property prediction.
    This model is based on the following paper:
    Lusci, Alessandro, Gianluca Pollastri, and Pierre Baldi. "Deep architectures and deep learning in chemoinformatics: the prediction of aqueous solubility for drug-like molecules." Journal of chemical information and modeling 53.7 (2013): 1563-1575.
   The basic idea for this paper is that a molecule is usually
   viewed as an undirected graph. However, you can convert it to
   a series of directed graphs. The idea is that for each atom,
   you make a DAG using that atom as the vertex of the DAG and
   edges pointing "inwards" to it. This transformation is
   implemented in
   `dc.trans.transformers.DAGTransformer.UG_to_DAG`.
   This model accepts ConvMols as input, just as GraphConvModel
   does, but these ConvMol objects must be transformed by
   dc.trans.DAGTransformer.
   As a note, performance of this model can be a little
   sensitive to initialization. It might be worth training a few
   different instantiations to get a stable set of parameters.
   """

https://github.com/deepchem/deepchem/blob/master/deepchem/models/graph_models.py


Last edited by Chromium6 on Sun Feb 12, 2023 3:57 pm; edited 1 time in total (Reason for editing : Quote to Code change.)

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Sun Nov 20, 2022 6:42 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Argonp10
Argon, 18. Containing proton pairs in slots 1-9. All protons (blue crosses), neutrons (red diamonds) and electrons (cyan dots) are included. The random neutron and electron orbital positions are not included making an odd alignment yet increased clarity.

Made some small sub-atomic positional progress. As you may note from the image, a remaining problem involves the way slot 1 is handled. And the answer to last post’s puzzler: Why were most of Francium’s protons positioned on the x=0, yz plane? There was no need to introduce deltax, deltay or deltaz values to get the proton’s position relative to the slot’s (0,0,0) center. The protons were initially added relative to that position. I should have known. Programming can be humbling.

Cr6 wrote.
I'm just trying to get layouts built up in yEd that can allow a "graph" ready structure with the 19 slots-protons to bond in 2-D style. Your epn layouts can be added to this later and hopefully allow for proper rendering after saying something like "show me sulfur 'bonding' with Mathis' slots to 2 oxygen molecules to make sulfur dioxide with classical bonding and Mathis style bonding. Miles has provided the new Periodic table but "bonding" rules are a bit more delicate. I'm trying to build up the Mathis elements with yEd then add them to a reference graph database that can provide relational bonding via either "match" functions or "links" between nearby slots that have a relatable match. Like Oxygen can "bond" with sulfur on these particular slots and directions-spins-protons due to these slot matches and have it still somewhat faithfully match with old "bonding" theory. This is the goal.

Agreed Cr6. It would be awesome comparing side-by-side mainstream and charge field atomic models. Asking "Show me sulfur 'bonding'" and seeing the result sounds impressive. Happy to work with you toward that goal.  

Adding positional data to the dataframe. Can’t say how long it will be before I start playing with a “graph” app. I'm awaiting your recommendation and obviously still working on positional data. By the way, I was clearly in a rut, getting nowhere with more than one atom. I’ve come to realize that adding positional data to the data frame is indeed an important step forward. It helps automate things, directly reducing the coding necessary to build or display an atom, making it easier to work with multiple atoms. And probably makes it easier for some ML app to play with too.

More on my insistence for 3D modeling. Agreed, matplot is a perfectly good answer when working with positional data, as in viewing atomic facsimiles or improper proton positions. To “investigate a 3-D landscape for slotting” is a nice way of putting it. Matplot is generally considered a bit 3d primitive, clunky. Nevertheless speaking as an engineer, writing guaranteed error-free positional data to the dataframe makes any 3D scatter graph plotting capability essential; that is, for clarity’s sake and sharing that information, as can be seen in the matplot image of Argon above.

That's where the atomic number (An) length e-p-n (x,y,z) positional data sets show their main advantage, they can be read and plotted as numpy lists by most any other 3D graphic python package like Matplot or Mayavi. Makes it seem all the more likely that there’s at least one ideal “graph” app that can read numpy data sets and includes a 3D scatter graph capabilities.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Clktos10
Updated Pythreejs to version 2.4.1. Used anaconda to update ipython, ipywidgets and pythreejs. Sure enough, the orbital camera is no longer a problem. Instead, I can no longer see the threejs atomic rendering or rotation controls, both now show error icons. That applies to any version of the project. The rest: the Periodic table, main gui-widget and slotlayout tabs still function properly. Luckily, this issue has been identified.

https://github.com/jupyter-widgets/pythreejs/issues/389
Javascript error when rendering with version 2.4.1. Opened on 26 Sept.

Do Not Update to Pythreejs version 2.4.1. I’m confident they’ll correct the issue eventually. Otherwize, if this unfortunate pythreejs issue impacts you, you’ll probably need to load a new python environment with a previous pythreejs version. I understand that’s an anaconda or hacker-level user option but I haven’t looked into it yet. I should add this info to to the github Project’s ReadMe file. It’s definitely bad news but given the fact that a new cell or two can be added which could display matplot or mayavi version atoms makes this particular issue mainly an inconvenience.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Tue Nov 22, 2022 2:31 am

Hope things get better with the layouts LTAM. Looks like libraries are not in sync for old-new.  Seen this with different libraries over the years after a new release-upgrade. It can be major hassle to sync with the old that basically works.

Came across this recently. Related to the random stuff posted above. Has a decent explanation of the "Affinity Matrix" for classical molecular bonding. Spectral Clustering is also mentioned which might be useful for a graph layout of Mathis' Periodic Table:

https://www.nature.com/articles/s42256-021-00438-4
https://www.nature.com/articles/s42256-022-00447-x
https://moleculenet.org/datasets-1
https://scimes.readthedocs.io/en/latest/algorithm.html
https://personal.ie.cuhk.edu.hk/~ccloy/files/cvpr_2014_spectral.pdf

Nature wrote:Main
Molecular property prediction has been widely considered as one of the most critical tasks in computational drug and materials discovery, as many methods rely on predicted molecular properties to evaluate, select and generate molecules1,2. With the development of deep neural networks (DNNs), molecular representation learning exhibits a great advantage over feature engineering-based methods, which has attracted increasing research attention to tackle the molecular property prediction problem.

Graph neural networks (GNNs) for molecular representation learning have recently become an emerging research area, which regard the topology of atoms and bonds as a graph, and propagate messages of each element to its neighbours3,4,5,6. However, one major obstacle to hinder the successful application of GNNs (and DNNs) in molecule property prediction is the scarity of labelled data, which is also a common research challenge in natural language processing7,8 and computer vision9,10 communities. Inspired by the success of self-supervised learning, recent studies4,11 start to use large-scale unlabelled molecules in a self-supervised methodology to pre-train the molecular representation and then use a small number of labelled molecules to fine tune the models, achieving substantial improvements.

Existing self-supervised learning techniques for GNNs4,11 only consider the topology information of the molecules, neglecting the molecular geometry, that is, the three-dimensional spatial structure of a molecule. These works conduct self-supervised learning by masking and predicting in nodes, edges or contexts in the topology4,11. Yet these tasks only enable the model to learn the laws of molecular graph such as which atom/group could be connected to a double bond, and lack the ability to learn the molecular geometry knowledge, which plays an important role in determining molecules’ physical, chemical and biological activities. For example, the water solubility (a critical metric of drug-likeness) of the two molecules illustrated in Fig. 1 is different due to their differing geometries, even though they have the same topology. Cis-platin and trans-platin are another example of molecules with the same topology but different geometries: cis-platin is a popular chemotherapy drug used to treat a number of cancers, whereas trans-platin has no cytotoxic activity12.

Fig. 1: Comparison between two stereoisomers with the same topology but different geometries.

Miles Periodic Table with Standard Periodic Table reference - Page 5 42256_2021_438_Fig1_HTML
figure 1
The two chlorine atoms are on different sides in trans-1,2-dichloroethene (left) but the same side in cis-1,2-dichloroethene (right).

Full size image
Although incorporating geometric information into graph architectures to benefit some molecular property estimation tasks has attracted research attention in recent years13,14,15,16,17, there is still a demand to utilize the molecular geometry information to develop a self-supervised learning paradigm for property prediction. We argue that adopting the self-supervised learning to estimate the geometry can contribute to facilitating the model’s capacity in predicting various properties. Self-supervised learning can take advantage of the large-scale unlabelled molecules with coarse three-dimensional spatial structures to better learn the molecular representation, where the coarse three-dimensional spatial structures can be efficiently calculated by cheminformatics tools such as RDKit (https://www.rdkit.org/). By geometry-level self-supervised learning, the pre-trained model is capable of inferring the molecular geometry by itself.

To this end, we propose a novel geometry-enhanced molecular representation learning method (GEM). First, to make the message passing sensitive to geometries, we model the effects of atoms, bonds and bond angles simultaneously by designing a geometry-based GNN architecture (GeoGNN). The architecture consists of two graphs: the first graph regards the atoms as nodes and the bonds as edges, whereas the second graph regards the bonds as nodes and the bond angles as edges. Second, we pre-train the GeoGNN to learn the chemical laws and the geometries from large-scale molecules with coarse three-dimensional spatial structures, designing various geometry-level self-supervised learning tasks. To verify the effectiveness of the proposed GEM, we compared it with several state-of-the-art (SOTA) baselines on 15 molecular property prediction benchmarks, among which GEM achieves 14 SOTA results.

Our contributions can be summarized as follows:

We propose a novel geometry-based GNN to encode both the topology and geometry information of molecules.

We design multiple geometry-level self-supervised learning tasks to learn the molecular spatial knowledge from large-scale molecules with coarse spatial structures.

We evaluated GEM thoroughly on various molecular property prediction datasets. Experimental results demonstrate that GEM considerably outperforms competitive baselines on multiple benchmarks.
Miles Periodic Table with Standard Periodic Table reference - Page 5 42256_2021_438_Fig2_HTML

a, In atom–bond graph G, the chemical bonds are regarded as edges, connecting the atoms. In the bond–angle graph H, the bond angles are regarded as edges, and a bond angle connects two chemical bonds and three atoms. The double-dash arcs indicate the correspondence between the elements in the two graphs. b, Demonstration of geometry-level self-supervised learning tasks. The black circle represents the selected atom, whereas the grey circles in graph G represent the neighbouring masked atoms, the grey lines in graph G and the grey ovals in graph H represent the neighbouring masked bonds, and the grey lines in graph H represent the neighbouring masked bond angles.

GeoGNN learns the representation vectors of atoms and bonds iteratively. For the kth iteration, the representation vectors of atom u and bond (u, v) are denoted by hu and huv, respectively. To connect the atom–bond graph G and bond–angle graph H, the representation vectors of the bonds are taken as the communication links between G and H. In the first step, the bonds’ representation vectors are learned by aggregating messages from the neighbouring bonds and corresponding bond angles in the bond–angle graph H. In the second step, the atoms’ representation vectors are learned by aggregating messages from the neighbouring atoms and the corresponding bonds in the atom–bond graph G. Finally, the molecular representation hG is obtained by pooling over the atoms’ representations. See the Methods for details on the GeoGNN architecture.

The Github link for the article: https://github.com/PaddlePaddle/PaddleHelix/tree/dev/apps/pretrained_compound/ChemRL/GEM

Geometry Enhanced Molecular Representation Learning for Property Prediction

Background
Recent advances in graph neural networks (GNNs) have shown great promise in applying GNNs for molecular representation learning. However, existing GNNs usually treat molecules as topological graph data without fully utilizing the molecular geometry information, which is one of the most critical factors for determining molecular physical, chemical, and biological properties.

To this end, we propose a novel Geometry Enhanced Molecular representation learning method (GEM):

At first, we design a geometry-based GNN architecture (GeoGNN) that simultaneously models atoms, bonds, and bond angles in a molecule.

Moreover, on top of the devised GNN architecture, we propose several novel geometry-level self-supervised learning strategies to learn spatial knowledge by utilizing the local and global molecular 3D structures.

Abstract
Molecular machine learning bears promise for efficient molecular property prediction and drug discovery. However, labelled molecule data can be expensive and time consuming to acquire. Due to the limited labelled data, it is a great challenge for supervised-learning machine learning models to generalize to the giant chemical space. Here we present MolCLR (Molecular Contrastive Learning of Representations via Graph Neural Networks), a self-supervised learning framework that leverages large unlabelled data (~10 million unique molecules). In MolCLR pre-training, we build molecule graphs and develop graph-neural-network encoders to learn differentiable representations. Three molecule graph augmentations are proposed: atom masking, bond deletion and subgraph removal. A contrastive estimator maximizes the agreement of augmentations from the same molecule while minimizing the agreement of different molecules. Experiments show that our contrastive learning framework significantly improves the performance of graph-neural-network encoders on various molecular property benchmarks including both classification and regression tasks. Benefiting from pre-training on the large unlabelled database, MolCLR even achieves state of the art on several challenging benchmarks after fine-tuning. In addition, further investigations demonstrate that MolCLR learns to embed molecules into representations that can distinguish chemically reasonable molecular similarities.

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Thu Nov 24, 2022 2:28 am

Reading through different items I came across PaddlePaddle's Quantum library that has qchem for molecular bond analysis. PaddlePaddle is from Baidu and has a ton of libraries integrated. It even has stock analysis samples with Quantum. PaddlePaddle also has several different well integrated Graph data libraries as well:

https://github.com/PaddlePaddle/Quantum#install-paddle-quantum
https://github.com/PaddlePaddle/Quantum/blob/master/tutorials/quantum_simulation/BuildingMolecule_EN.ipynb

PaddlePaddlePGL library:
https://github.com/PaddlePaddle/PGL

Example graph neural network in a Jupyter notebook using numpy functions:
https://github.com/giuseppefutia/notebooks/blob/main/gnns/rgcn.ipynb

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Sat Nov 26, 2022 7:31 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Bi83no10
83, Bi, bismuth’s slotsetA_df data frame including all proton (blue +), neutron (red Diamond) and electron (cyan X) e-p-n (x,y,z) positional data. The slots are properly X,Y or Z, aligned. Proton positions are written to the data frame by a single coordinate while e and n particle positions are identified by two coordinates. As such, the e and n coordinates do not include randomizations about their respective p spin axes. Another option was to include the randomizations by expanding the entire Element-Positions.csv to include them as well as three additional columns of randomized coordinates for the second possible neutron – making the data frame’s positional data with fixed randomizations much more difficult to read. The scheme chosen allows for easy position verification, and makes the addition of a second neutron (as with e-p-nn or nn-p-e) as simple as copying the first n’s coordinates and making a single x, y or z, +/- sign change. As shown in Bi above.

The addition of the second n to an e-p-n set as per the data frame’s data, as well as e and n randomizing must be done by the functional cell creating a working copy of the atom. That cell reads the data frame and output the data sets plotted by matplot.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Bi83ra10
It’s been two weeks since I first included an image of Mercury’s expanded slotsetA_df and the image of of its data frame including the positions which did contain many errors. Plenty of changes which need cleaning and orderly updates to github, including the pythreejs error issue I mentioned last time. This latest plot of Bismuth looks good but I’ll be reviewing each atom in turn, hard copying the slotsetA_df data frame positional additions directly to Element-Positions.csv. I think I see how the process can be automated in one 90 loop go round but I think I’ll differ that sort of thing for the time being.

Miles Periodic Table with Standard Periodic Table reference - Page 5 Bi83el10

Cr6, Thanks for the abundant reading materials. The GEM paper is a great find, not for mainstream theory sake, but for machine intelligence. Machines will (or likely already have) discover(ed) Miles’ charge field atomic structures, long before the mainstream (them too) does. I cannot imagine them sharing.

Pardon my quick summary, in the very specialized field of molecular graph neural network (GNN) type projects, GEM claims superior performance and verifies those claims with comparison tables containing learning benchmarks that would require a great deal of study for me to properly appreciate. I get a basic idea how their machine learns.

1. The typical molecular neural network treats atoms as nodes and bonds as edges. Properties are learned from topological or feature data. I believe geometric structural data is referred to as local data, of which there is usually a short supply.  
The Gem neural network includes a second parallel methodology of “learning a 3D structure” by
2. Treating bonds as nodes and the bond angle as the edge.  

I’ve been considering the first case ever since you first mentioned the need for atomic nodes and edges Cr6, although of course a charge field bond is more than an edge, it is a two way bond consisting of real and measurable contra currents of photons and anti-photons.

I considered the second process of determining bond angles very interesting from the charge field point of view. I don’t see why not, bond angles are probably perfectly valid charge field data.

This project can provide 90 charge field. 3D atomic models, Hydrogen through Thorium. Each is basically a unique 6 directional object according to the slot layout configuration. Miles has described that when bonded, or slotted together, the larger atoms’ stronger charge flows will deform the smaller atom’s structure, such as is true with water H2O bonds. I’d need to look over the water paper again to see about the math, Any graph we end up with should include that extra degree of directional freedom, or literally flexible bonding.

Other than that, after a quick read, I found the paper very reassuring. I’m sure the charge field atomic models provide just the 3D structural foundation the GEM folk would be delighted to find. Can one ask if the GEM methodology might be able to evaluate performance based on the charge field 3D models? It’s difficult without charge field theory, but I’m sure the machines would likely see the advantages.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Chromium6 Tue Nov 29, 2022 2:18 am

LTAM wrote:I considered the second process of determining bond angles very interesting from the charge field point of view. I don’t see why not, bond angles are probably perfectly valid charge field data.

This project can provide 90 charge field. 3D atomic models, Hydrogen through Thorium. Each is basically a unique 6 directional object according to the slot layout configuration. Miles has described that when bonded, or slotted together, the larger atoms’ stronger charge flows will deform the smaller atom’s structure, such as is true with water H2O bonds. I’d need to look over the water paper again to see about the math, Any graph we end up with should include that extra degree of directional freedom, or literally flexible bonding.

Other than that, after a quick read, I found the paper very reassuring. I’m sure the charge field atomic models provide just the 3D structural foundation the GEM folk would be delighted to find. Can one ask if the GEM methodology might be able to evaluate performance based on the charge field 3D models? It’s difficult without charge field theory, but I’m sure the machines would likely see the advantages.

This has the "challenge" bit in it. Like with Miles' what is a Node and what is an Edge? In terms of graph bonding representation? I've been leaning to slot positions as edges, which also includes a "direction" or "spin direction-position" as edges as well with the Node as the "slot". I don't know if this matches up with your perspective. It is almost if we need to model the atom at a perfect snapshot in time to find out where it can "bond" or create an edge with to another atom. So then what is the edge and what is the node? I was leaning on each slot layout actually as a node and their stacks as edges at this point. Are Ionization potentials for bonding a factor to include as well? I agree that traditional bonding with GEM can provide some insights on what "bonding" really looks like in terms of Miles' bonds. Or at least help with representing it. Most of the stuff the GEM does looks like it was found out after a lot of tuning and trial runs to get a decent match up.

Here's the "Hamiltonian" layout: https://en.wikipedia.org/wiki/Hamiltonian_(quantum_mechanics)
https://en.wikipedia.org/wiki/Hamiltonian_mechanics

Miles mentions this in these papers with the topic around Laplace:
http://milesmathis.com/laplace.html
UNLOCKING the LAGRANGIAN
http://milesmathis.com/lag3.pdf
http://milesmathis.com/lagrange2.html
Perturbation Theory in the Light of Charge
http://milesmathis.com/lap2.pdf

BTW, nice layouts with matplot and grids in your post above. Smile


Last edited by Chromium6 on Fri Dec 02, 2022 5:00 am; edited 1 time in total

Chromium6

Posts : 712
Join date : 2019-11-29

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by LongtimeAirman Thu Dec 01, 2022 6:33 pm

.
Miles Periodic Table with Standard Periodic Table reference - Page 5 Oxygen10
Oxygen sub-particles in slots 1, 2 and 3 showing the results in varying the distances between orthogonal protons, the o-slots gap, (P12); and between parallel protons, pole-to-pole, the epn gap (P2P3). The top middle and bottom middle images are the same. The images look good but I don't give up easy. 

BTW, nice layouts with mathplot and grids in your post above. 
Thanks, Cr6, I was working on that. SlotsetA_df should have been the top image. Given spherical particles, one must display 3d images in motion or multiple viewpoints in order to resolve any directional uncertainties, and so I just had to provide the x,y,z and orthographic views. You realize of course, that in order to make those images I ran the plot four times from four different directions and assembled the 4 cropped screenshots in Paint. You’ll no doubt notice any discrepancies in the latest image above.

Code:

""" Sub-plotting charge field atoms. """

import numpy as np
import matplotlib.pyplot as plt

%matplotlib notebook

fig = plt.figure(figsize=(10,10))

#qklimit = 0.75
qklimit = 1.2

ax = fig.add_subplot(2, 2, 1, projection='3d')
ax.scatter3D(allPXs,allPYs,allPZs, zdir='z', c='blue', cmap='Greens', marker='P');
ax.scatter3D(allNXs,allNYs,allNZs, zdir='z', c='red', cmap='Yellows', marker='D');
#ax.scatter3D(allEXs,allEYs,allEZs, c='cyan', cmap='Blues', marker='.');
ax.scatter3D(allEXs,allEYs,allEZs, zdir='z', c='cyan', cmap='Blues', marker='X');
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.view_init(0,0) #zdir='z'  vert z, horiz y
ax.set_xlim3d(-qklimit, qklimit)
ax.set_ylim3d(-qklimit, qklimit)
ax.set_zlim3d(-qklimit, qklimit)
ax.set_title('(0,0)')

ax = fig.add_subplot(2, 2, 2, projection='3d')
ax.scatter3D(allPXs,allPYs,allPZs, c='blue', cmap='Greens', marker='P');
ax.scatter3D(allNXs,allNYs,allNZs, c='red', cmap='Yellows', marker='D');
#ax.scatter3D(allEXs,allEYs,allEZs, c='cyan', cmap='Blues', marker='.');
ax.scatter3D(allEXs,allEYs,allEZs, c='cyan', cmap='Blues', marker='X');
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.view_init(0,90) #zdir='z' vert z, horiz y -try to flip these
ax.set_xlim3d(-qklimit, qklimit)
ax.set_ylim3d(-qklimit, qklimit)
ax.set_zlim3d(-qklimit, qklimit)
ax.set_title('(0,90)')

ax = fig.add_subplot(2, 2, 3, projection='3d')
ax.scatter3D(allPXs,allPYs,allPZs, c='blue', cmap='Greens', marker='P');
ax.scatter3D(allNXs,allNYs,allNZs, c='red', cmap='Yellows', marker='D');
#ax.scatter3D(allEXs,allEYs,allEZs, c='cyan', cmap='Blues', marker='.');
ax.scatter3D(allEXs,allEYs,allEZs, c='cyan', cmap='Blues', marker='X');
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.view_init(90,90) #zdir='z' vert y, horiz x
ax.set_xlim3d(-qklimit, qklimit)
ax.set_ylim3d(-qklimit, qklimit)
ax.set_zlim3d(-qklimit, qklimit)
ax.set_title('(90,90)')

ax = fig.add_subplot(2, 2, 4, projection='3d')
ax.scatter3D(allPXs,allPYs,allPZs, c='blue', cmap='Greens', marker='P');
ax.scatter3D(allNXs,allNYs,allNZs, c='red', cmap='Yellows', marker='D');
#ax.scatter3D(allEXs,allEYs,allEZs, c='cyan', cmap='Blues', marker='.');
ax.scatter3D(allEXs,allEYs,allEZs, c='cyan', cmap='Blues', marker='X');
ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
ax.view_init(30,40)
ax.set_xlim3d(-qklimit, qklimit)
ax.set_ylim3d(-qklimit, qklimit)
ax.set_zlim3d(-qklimit, qklimit)
ax.set_title('(30,40)')

"""#('.','o','s','P','X' '*','p','D','<','>','^','v'
#   '1','2','3','4','+','x','|',' ',4,5,6,7,
#   '$ $', ... )

ax.set_xlabel('X')
ax.set_ylabel('Y')
ax.set_zlabel('Z')
""";

Sub-plotting charge field atoms.

1. Subplots. In a slow but normal matplot learning progression, the code now creates those four views in a single output plot comprised of four interactive subplots. The previous matplot notebook cell is improved and still available to make single view plots.

Miles’ depictions of protons as compact discs with emission planes oriented in +/-, x, y, z directions is a most noteworthy and an amazing accomplishment in and of itself; enabling viewers to easily see the 2d images as 3D charge field atomic structures.

The pythreejs model also displays protons with +/-, x, y, z emission plane directions, but as of yet, the matplot code does not.

I think its safe to say that any charge field 2d molecular model we might develop will no doubt include those same color coded proton directional indicators as well.  

2. Matplot x y and z axes scales are now equal. The previous plots showed matplot “auto-scaling”, compressing atoms by reducing the z linear dimension to roughly half that of the equal x and y dimensions. The three scales can became the same by specifying equal limits to each axis. The subplot cell contains twelve sets (four each x y and z) of limits. They can all be varied with a single variable, qklimit. For example change qklimit = 1.5 to qklimit = 0.75 and rerun the notebook cell for 4 closer looks.

3. Building Elements-Positions.csv. The top image shows my current progress. I initially assumed I could start with a given set of up to 19 slots’ center coordinates (PX, PY, PZ) provided by the Build Atom cell. That’s a poor assumption as each slot’s PX, PY and PZ will vary according to user-selected values; just two at present – P12 (the gap between the orthogonal protons (equator-to-pole) and P2P3 the gap between parallel protons (pole-to-pole). The neutron spacing is P2P3/2. I had a problem when I saw varying the P12 control fails to change any PX, PY, or PZ value. Rather than trying to track it down, I decided to just go ahead and calculate each particle position and PX PY and PZ too.

Easier said than done.  Here’s the logic I’m currently trying to implement.
Z aligned, Slot1 is at (0,0,0). The atom grows outward in six directions: +/- x,y,z. The number of protons in each slot also grows 1 to 6. Each subsequent slot added depends on the position of the slot it connects to. One slot's end (0,0,+/-pPosition(numPs)) connects to the next slot's middle (0,0,0). Keep track of those extents as each slot is added, starting at zero.

When slot1 is added at (0,0,0), the positive and negative z extents become slot1’s top and bottom proton positions. Slot2’s center PZ value will be equal to slot1’s top position plus P12. Positioning slot2 establishes the z extent for slot4 (another P12 addition), along with the z position for hook slots 16/18 at slot2’s z center, and y extents for slot 16/18. Slot3 similarly establishes extZneg for slot5, and hook slot 17/19 extents: extZ1719, extY17pos, extY19neg. Etc. List everything at first, clean it up later.

I need to give the particles a more accurate size.

Wish I could keep up with all the reading assignments and posts Cr6. Thanks for the low-down on Crichton E. M. Miller's description of the Egyptian version of the Celtic cross. The Cross in the Pyramid. Here’s another link to that document. http://www.touregypt.net/magazine/pyramid.htm.
.

LongtimeAirman
Admin

Posts : 2015
Join date : 2014-08-10

Chromium6 likes this post

Back to top Go down

Miles Periodic Table with Standard Periodic Table reference - Page 5 Empty Re: Miles Periodic Table with Standard Periodic Table reference

Post by Sponsored content


Sponsored content


Back to top Go down

Page 4 of 11 Previous  1, 2, 3, 4, 5 ... 9, 10, 11  Next

Back to top

- Similar topics

 
Permissions in this forum:
You cannot reply to topics in this forum