SAMSON Forum
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • SAMSON Connect
    • Get SAMSON

    Serialization/Unserialization issues

    Modeling
    3
    17
    7689
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • E
      Elisa @Stephane last edited by

      Hi Stephane,

      Sorry for the late reply, my laptop broke and I couldn't test it.

      The problem that I'm having is that when calling the parent functions the unserialize function crashes:

      void MyStructuralModel::serialize(SBCSerializer * serializer, const SBNodeIndexer & nodeIndexer, const SBVersionNumber & sdkVersionNumber, const SBVersionNumber & classVersionNumber)
      {
        SBStructuralModel::serialize(serializer, nodeIndexer, sdkVersionNumber, classVersionNumber);
        
        serializer->writeIntElement("one_property", number1);
        serializer->writeIntElement("another_property", number2);
      }
      

      and:

      void MyStructuralModel::unserialize(SBCSerializer * serializer, const SBNodeIndexer & nodeIndexer, const SBVersionNumber & sdkVersionNumber, const SBVersionNumber & classVersionNumber)
      {
        SBStructuralModel::unserialize(serializer, nodeIndexer, sdkVersionNumber, classVersionNumber);
        
        int p1 = serializer->readIntElement();
        int p2 = serializer->readIntElement();
      }
      

      After saving, I get the crash at int p1 = serializer->readIntElement(); as an overflow, like the serializer didn't move into the next value.

      I can avoid this crash if I don't call the parent functions, but then if I save more than one of my models, it will crash (again same error, probably because I'm reading something else from the .samx file)

      I think this might be because I didn't implement serialize and unserialize functions for all elements of my model, I just re-used the code that we had for our internal saving (we are using json). I will try to set properly all serialize/unserialize functions.

      Best regards,

      Elisa

      1 Reply Last reply Reply Quote 0
      • E
        Elisa last edited by Elisa

        Sorry for the double posting,

        I have now done very basic serialization in my model, basically every element calls the parent function serialize or unserialize methods. I get all the nodes back, except for the atoms belonging to classes inheriting from SBBackbone and SBSideChain.

        void MyBackbone::serialize(SBCSerializer * serializer, const SBNodeIndexer & nodeIndexer, const SBVersionNumber & sdkVersionNumber, const SBVersionNumber & classVersionNumber) const
        {
          SBBackbone::serialize(serializer, nodeIndexer, sdkVersionNumber, classVersionNumber);
        }
        
        void MyBackbone::unserialize(SBCSerializer * serializer, const SBNodeIndexer & nodeIndexer, const SBVersionNumber & sdkVersionNumber, const SBVersionNumber & classVersionNumber)
        {
          SBBackbone::unserialize(serializer, nodeIndexer, sdkVersionNumber, classVersionNumber);
        
          SB_FOR(SBNode* n, *getChildren()) {
            SBPointer<MyAtom> at = static_cast<MyAtom*>(n);
            //at->create();
          }
        }
        

        I can check in this way that the atoms are correctly added as children to MyBackbone, but they are not created in the Datagraph. I don't have this problem with classes deriving from SBStructuralGroup, where atoms are correctly created in the data graph.

        Thanks and best regards!

        Elisa

        1 Reply Last reply Reply Quote 0
        • Stephane
          Stephane last edited by

          Hi Elisa,

          if this is not confidential, could you please post the contents of the simplest .samx file that creates an issue with a backbone?

          Stephane

          1 Reply Last reply Reply Quote 0
          • E
            Elisa last edited by Elisa

            The file is quite long, so I will post the relevant parts:

            <SAMSON>
            	<majorVersionNumber> 0 </majorVersionNumber>
            	<minorVersionNumber> 7 </minorVersionNumber>
            	<patchVersionNumber> 0 </patchVersionNumber>
            	<numberOfNodeTypes> 15 </numberOfNodeTypes>
            	<nodeTypes>
            		<nodeType>
            			<nodeTypeIndex> 0 </nodeTypeIndex>
            			<className> MySidechain </className>
            			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
            			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
            			<classVersionNumber> 1.0.0 </classVersionNumber>
            		</nodeType>
            		<nodeType>
            			<nodeTypeIndex> 1 </nodeTypeIndex>
            			<className> MyBackbone </className>
            			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
            			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
            			<classVersionNumber> 1.0.0 </classVersionNumber>
            		</nodeType>
            		
            		...
            		
            		<nodeType>
            			<nodeTypeIndex> 4 </nodeTypeIndex>
            			<className> MyStructuralGroup </className>
            			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
            			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
            			<classVersionNumber> 1.0.0 </classVersionNumber>
            		</nodeType>
            		
            		...
            		
            		<nodeType>
            			<nodeTypeIndex> 11 </nodeTypeIndex>
            			<className> SBMStructuralModelNodeRoot </className>
            			<elementUUID> 5A3CE002-9368-1EAF-7DBA-66567958AB1F </elementUUID>
            			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
            			<classVersionNumber> 0.7.0 </classVersionNumber>
            		</nodeType>
            		<nodeType>
            			<nodeTypeIndex> 12 </nodeTypeIndex>
            			<className> SBDDocumentCamera </className>
            			<elementUUID> 131D70CF-3B19-61A8-B67C-BBDA93776B38 </elementUUID>
            			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
            			<classVersionNumber> 0.7.0 </classVersionNumber>
            		</nodeType>
            		<nodeType>
            			<nodeTypeIndex> 13 </nodeTypeIndex>
            			<className> SBDDocumentLayer </className>
            			<elementUUID> 131D70CF-3B19-61A8-B67C-BBDA93776B38 </elementUUID>
            			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
            			<classVersionNumber> 0.7.0 </classVersionNumber>
            		</nodeType>
            		<nodeType>
            			<nodeTypeIndex> 14 </nodeTypeIndex>
            			<className> SBDDocument </className>
            			<elementUUID> 131D70CF-3B19-61A8-B67C-BBDA93776B38 </elementUUID>
            			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
            			<classVersionNumber> 0.7.0 </classVersionNumber>
            		</nodeType>
            	</nodeTypes>
            
            	...
            	
            	<nodeContents>
            		<node>
            			<index> 0 </index>
            			<expandedFlag> 1 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<numberOfCameras> 1 </numberOfCameras>
            			<nodeIndex> 1 </nodeIndex>
            			<numberOfLayers> 1 </numberOfLayers>
            			<nodeIndex> 2 </nodeIndex>
            			<numberOfGroups> 0 </numberOfGroups>
            			<numberOfStoredConformations> 0 </numberOfStoredConformations>
            			<numberOfStoredPaths> 0 </numberOfStoredPaths>
            			<activeCameraIndex> 1 </activeCameraIndex>
            			<activeLayerIndex> 2 </activeLayerIndex>
            		</node>
            		<node>
            			<index> 1 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<name> Camera 1 </name>
            			<eyePosition>
            				<v[0]> -49817.3 </v[0]>
            				<v[1]> -37448.3 </v[1]>
            				<v[2]> -27528.1 </v[2]>
            			</eyePosition>
            			<targetPosition>
            				<v[0]> -2.47394 </v[0]>
            				<v[1]> -0.57391 </v[1]>
            				<v[2]> -5.94904 </v[2]>
            			</targetPosition>
            			<upVector>
            				<v[0]> -0.569802 </v[0]>
            				<v[1]> 0.166545 </v[1]>
            				<v[2]> 0.804729 </v[2]>
            			</upVector>
            			<nearPlane> 100 </nearPlane>
            			<farPlane> 2e+06 </farPlane>
            			<aspectRatio> 1.41675 </aspectRatio>
            			<fieldOfViewAngleY> 19 </fieldOfViewAngleY>
            			<inertiaFlag> 0 </inertiaFlag>
            		</node>
            		<node>
            			<index> 2 </index>
            			<expandedFlag> 1 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<name> Layer 1 </name>
            			<numberOfModels> 1 </numberOfModels>
            			<nodeIndex> 3 </nodeIndex>
            			<numberOfSimulators> 0 </numberOfSimulators>
            			<numberOfControllers> 0 </numberOfControllers>
            			<numberOfLabels> 0 </numberOfLabels>
            			<hasActiveModel> 0 </hasActiveModel>
            		</node>
            		<node>
            			<index> 3 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<name> 01_tetrahedron </name>
            			<rootIndex> 4 </rootIndex>
            			<propertyFlags> 0 </propertyFlags>
            			<backboneNeighborGridInitialized> 0 </backboneNeighborGridInitialized>
            		</node>
            		<node>
            			<index> 4 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<name> Nodes </name>
            			<numberOfChildren> 26 </numberOfChildren>
            			<nodeIndex> 5 </nodeIndex>
            			<nodeIndex> 137 </nodeIndex>
            			<nodeIndex> 269 </nodeIndex>
            			<nodeIndex> 401 </nodeIndex>
            			<nodeIndex> 533 </nodeIndex>
            			<nodeIndex> 665 </nodeIndex>
            			<nodeIndex> 797 </nodeIndex>
            			<nodeIndex> 929 </nodeIndex>
            			<nodeIndex> 1061 </nodeIndex>
            			<nodeIndex> 1193 </nodeIndex>
            			<nodeIndex> 1325 </nodeIndex>
            			<nodeIndex> 1457 </nodeIndex>
            			<nodeIndex> 1589 </nodeIndex>
            			<nodeIndex> 4110 </nodeIndex>
            			<nodeIndex> 4321 </nodeIndex>
            			<nodeIndex> 4427 </nodeIndex>
            			<nodeIndex> 4533 </nodeIndex>
            			<nodeIndex> 4639 </nodeIndex>
            			<nodeIndex> 4745 </nodeIndex>
            			<nodeIndex> 4956 </nodeIndex>
            			<nodeIndex> 5062 </nodeIndex>
            			<nodeIndex> 5168 </nodeIndex>
            			<nodeIndex> 5379 </nodeIndex>
            			<nodeIndex> 5770 </nodeIndex>
            			<nodeIndex> 6161 </nodeIndex>
            			<nodeIndex> 6552 </nodeIndex>
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		
            		 ...
            		 
            		<node>
            			<index> 6 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<name> My Structural Group </name>
            			<numberOfChildren> 2 </numberOfChildren>
            			<nodeIndex> 7 </nodeIndex>
            			<nodeIndex> 8 </nodeIndex>
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		...
            		<node>
            			<index> 8 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 0 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<position>
            				<v[0]> -1485.23 </v[0]>
            				<v[1]> 172.5 </v[1]>
            				<v[2]> 9081.48 </v[2]>
            			</position>
            			<element> 109 </element>
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		...
            		<node>
            			<index> 6552 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<name> Chain </name>
            			<numberOfChildren> 78 </numberOfChildren>
            			<nodeIndex> 6553 </nodeIndex>
            			...
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		<node>
            			<index> 6553 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<name> Nucleotide </name>
            			<numberOfChildren> 2 </numberOfChildren>
            			<nodeIndex> 6554 </nodeIndex>
            			<nodeIndex> 6556 </nodeIndex>
            			<propertyFlags> 0 </propertyFlags>
            			<residueType> 34 </residueType>
            			<residueTypeString>  </residueTypeString>
            		</node>
            		<node>
            			<index> 6554 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<name> Backbone </name>
            			<numberOfChildren> 1 </numberOfChildren>
            			<nodeIndex> 6555 </nodeIndex>
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		<node>
            			<index> 6555 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 0 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<position>
            				<v[0]> 5569.81 </v[0]>
            				<v[1]> 2913.26 </v[1]>
            				<v[2]> -3182.39 </v[2]>
            			</position>
            			<element> 99 </element>
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		<node>
            			<index> 6556 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 1 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<name>Sidechain </name>
            			<numberOfChildren> 1 </numberOfChildren>
            			<nodeIndex> 6557 </nodeIndex>
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		<node>
            			<index> 6557 </index>
            			<expandedFlag> 0 </expandedFlag>
            			<visibilityFlag> 0 </visibilityFlag>
            			<hasMaterial> 0 </hasMaterial>
            			<mobilityFlag> 1 </mobilityFlag>
            			<position>
            				<v[0]> 5667.77 </v[0]>
            				<v[1]> 2915.8 </v[1]>
            				<v[2]> -2721.34 </v[2]>
            			</position>
            			<element> 100 </element>
            			<propertyFlags> 0 </propertyFlags>
            		</node>
            		...
            	</nodeContents>
            </SAMSON>
            

            Everything is in the data graph except for the atoms belonging to the backbone and sidechain.

            1 Reply Last reply Reply Quote 0
            • Stephane
              Stephane last edited by Stephane

              I might need more information from the file but a quick check indicates that the visibility flag of the atoms is set to false:

              <visibilityFlag> 0 </visibilityFlag>
              

              Is this normal? Also, do you have a MyAtom class or you use the SBAtom class? There are also Einsteinium and Meitnerium atoms?

              1 Reply Last reply Reply Quote 0
              • E
                Elisa last edited by Elisa

                It is normal, we hide them on purpose.

                MyAtom class inherits from SBAtom, yes. I will try to produce a very small example so I can paste the entire file.

                Edit: This is a small full sample

                <SAMSON>
                	<majorVersionNumber> 0 </majorVersionNumber>
                	<minorVersionNumber> 7 </minorVersionNumber>
                	<patchVersionNumber> 0 </patchVersionNumber>
                	<numberOfNodeTypes> 13 </numberOfNodeTypes>
                	<nodeTypes>
                		<nodeType>
                			<nodeTypeIndex> 0 </nodeTypeIndex>
                			<className> MySidechain </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 1 </nodeTypeIndex>
                			<className> MyBackbone </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 2 </nodeTypeIndex>
                			<className> MyChain </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 3 </nodeTypeIndex>
                			<className> MyStructuralModel </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 4 </nodeTypeIndex>
                			<className> MyStructuralGroup </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 5 </nodeTypeIndex>
                			<className> MyResidue </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 6 </nodeTypeIndex>
                			<className> MyAtom </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 7 </nodeTypeIndex>
                			<className> MyStructuralGroup2 </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 8 </nodeTypeIndex>
                			<className> MyStructuralGroup3 </className>
                			<elementUUID> DDA2A078-1AB6-96BA-0D14-EE1717632D7A </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 1.0.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 9 </nodeTypeIndex>
                			<className> SBMStructuralModelNodeRoot </className>
                			<elementUUID> 5A3CE002-9368-1EAF-7DBA-66567958AB1F </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 0.7.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 10 </nodeTypeIndex>
                			<className> SBDDocumentCamera </className>
                			<elementUUID> 131D70CF-3B19-61A8-B67C-BBDA93776B38 </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 0.7.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 11 </nodeTypeIndex>
                			<className> SBDDocumentLayer </className>
                			<elementUUID> 131D70CF-3B19-61A8-B67C-BBDA93776B38 </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 0.7.0 </classVersionNumber>
                		</nodeType>
                		<nodeType>
                			<nodeTypeIndex> 12 </nodeTypeIndex>
                			<className> SBDDocument </className>
                			<elementUUID> 131D70CF-3B19-61A8-B67C-BBDA93776B38 </elementUUID>
                			<sdkVersionNumber> 0.7.0 </sdkVersionNumber>
                			<classVersionNumber> 0.7.0 </classVersionNumber>
                		</nodeType>
                	</nodeTypes>
                	<numberOfNodes> 21 </numberOfNodes>
                	<nodes>
                		<nodeTypeIndex> 12 </nodeTypeIndex>
                		<nodeTypeIndex> 10 </nodeTypeIndex>
                		<nodeTypeIndex> 11 </nodeTypeIndex>
                		<nodeTypeIndex> 3 </nodeTypeIndex>
                		<nodeTypeIndex> 9 </nodeTypeIndex>
                		<nodeTypeIndex> 7 </nodeTypeIndex>
                		<nodeTypeIndex> 4 </nodeTypeIndex>
                		<nodeTypeIndex> 8 </nodeTypeIndex>
                		<nodeTypeIndex> 6 </nodeTypeIndex>
                		<nodeTypeIndex> 2 </nodeTypeIndex>
                		<nodeTypeIndex> 5 </nodeTypeIndex>
                		<nodeTypeIndex> 1 </nodeTypeIndex>
                		<nodeTypeIndex> 6 </nodeTypeIndex>
                		<nodeTypeIndex> 0 </nodeTypeIndex>
                		<nodeTypeIndex> 6 </nodeTypeIndex>
                		<nodeTypeIndex> 2 </nodeTypeIndex>
                		<nodeTypeIndex> 5 </nodeTypeIndex>
                		<nodeTypeIndex> 1 </nodeTypeIndex>
                		<nodeTypeIndex> 6 </nodeTypeIndex>
                		<nodeTypeIndex> 0 </nodeTypeIndex>
                		<nodeTypeIndex> 6 </nodeTypeIndex>
                	</nodes>
                	<nodeContents>
                		<node>
                			<index> 0 </index>
                			<expandedFlag> 1 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<numberOfCameras> 1 </numberOfCameras>
                			<nodeIndex> 1 </nodeIndex>
                			<numberOfLayers> 1 </numberOfLayers>
                			<nodeIndex> 2 </nodeIndex>
                			<numberOfGroups> 0 </numberOfGroups>
                			<numberOfStoredConformations> 0 </numberOfStoredConformations>
                			<numberOfStoredPaths> 0 </numberOfStoredPaths>
                			<activeCameraIndex> 1 </activeCameraIndex>
                			<activeLayerIndex> 2 </activeLayerIndex>
                		</node>
                		<node>
                			<index> 1 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<name> Camera 1 </name>
                			<eyePosition>
                				<v[0]> 0 </v[0]>
                				<v[1]> 0 </v[1]>
                				<v[2]> 10000 </v[2]>
                			</eyePosition>
                			<targetPosition>
                				<v[0]> 0 </v[0]>
                				<v[1]> 0 </v[1]>
                				<v[2]> 0 </v[2]>
                			</targetPosition>
                			<upVector>
                				<v[0]> 0 </v[0]>
                				<v[1]> 1 </v[1]>
                				<v[2]> 0 </v[2]>
                			</upVector>
                			<nearPlane> 100 </nearPlane>
                			<farPlane> 2e+06 </farPlane>
                			<aspectRatio> 1.41675 </aspectRatio>
                			<fieldOfViewAngleY> 19 </fieldOfViewAngleY>
                			<inertiaFlag> 0 </inertiaFlag>
                		</node>
                		<node>
                			<index> 2 </index>
                			<expandedFlag> 1 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<name> Layer 1 </name>
                			<numberOfModels> 1 </numberOfModels>
                			<nodeIndex> 3 </nodeIndex>
                			<numberOfSimulators> 0 </numberOfSimulators>
                			<numberOfControllers> 0 </numberOfControllers>
                			<numberOfLabels> 0 </numberOfLabels>
                			<hasActiveModel> 0 </hasActiveModel>
                		</node>
                		<node>
                			<index> 3 </index>
                			<expandedFlag> 1 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<name> Structural model </name>
                			<rootIndex> 4 </rootIndex>
                			<propertyFlags> 0 </propertyFlags>
                			<backboneNeighborGridInitialized> 0 </backboneNeighborGridInitialized>
                		</node>
                		<node>
                			<index> 4 </index>
                			<expandedFlag> 1 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> Nodes </name>
                			<numberOfChildren> 3 </numberOfChildren>
                			<nodeIndex> 5 </nodeIndex>
                			<nodeIndex> 9 </nodeIndex>
                			<nodeIndex> 15 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 5 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> Double Strand 1 </name>
                			<numberOfChildren> 1 </numberOfChildren>
                			<nodeIndex> 6 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 6 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> Base Segment 4099 </name>
                			<numberOfChildren> 2 </numberOfChildren>
                			<nodeIndex> 7 </nodeIndex>
                			<nodeIndex> 8 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 7 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> Base Pair 4100 </name>
                			<numberOfChildren> 0 </numberOfChildren>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 8 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 0 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<position>
                				<v[0]> -877.886 </v[0]>
                				<v[1]> 516.92 </v[1]>
                				<v[2]> 0.0153761 </v[2]>
                			</position>
                			<element> 109 </element>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 9 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> Single Strand 1 </name>
                			<numberOfChildren> 1 </numberOfChildren>
                			<nodeIndex> 10 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 10 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> N4102 </name>
                			<numberOfChildren> 2 </numberOfChildren>
                			<nodeIndex> 11 </nodeIndex>
                			<nodeIndex> 13 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                			<residueType> 36 </residueType>
                			<residueTypeString>  </residueTypeString>
                		</node>
                		<node>
                			<index> 11 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> N4102 Backbone </name>
                			<numberOfChildren> 1 </numberOfChildren>
                			<nodeIndex> 12 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 12 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 0 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<position>
                				<v[0]> -970.453 </v[0]>
                				<v[1]> -85.8914 </v[1]>
                				<v[2]> 538.434 </v[2]>
                			</position>
                			<element> 99 </element>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 13 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> N4102 Sidechain </name>
                			<numberOfChildren> 1 </numberOfChildren>
                			<nodeIndex> 14 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 14 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 0 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<position>
                				<v[0]> -880.731 </v[0]>
                				<v[1]> 352.262 </v[1]>
                				<v[2]> 220.392 </v[2]>
                			</position>
                			<element> 100 </element>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 15 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> Single Strand 2 </name>
                			<numberOfChildren> 1 </numberOfChildren>
                			<nodeIndex> 16 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 16 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> N4108 </name>
                			<numberOfChildren> 2 </numberOfChildren>
                			<nodeIndex> 17 </nodeIndex>
                			<nodeIndex> 19 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                			<residueType> 36 </residueType>
                			<residueTypeString>  </residueTypeString>
                		</node>
                		<node>
                			<index> 17 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> N4108 Backbone </name>
                			<numberOfChildren> 1 </numberOfChildren>
                			<nodeIndex> 18 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 18 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 0 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<position>
                				<v[0]> -788.488 </v[0]>
                				<v[1]> 1018.95 </v[1]>
                				<v[2]> -570.406 </v[2]>
                			</position>
                			<element> 99 </element>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 19 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 1 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<name> N4108 Sidechain </name>
                			<numberOfChildren> 1 </numberOfChildren>
                			<nodeIndex> 20 </nodeIndex>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                		<node>
                			<index> 20 </index>
                			<expandedFlag> 0 </expandedFlag>
                			<visibilityFlag> 0 </visibilityFlag>
                			<hasMaterial> 0 </hasMaterial>
                			<mobilityFlag> 1 </mobilityFlag>
                			<position>
                				<v[0]> -874.781 </v[0]>
                				<v[1]> 804.363 </v[1]>
                				<v[2]> -159.697 </v[2]>
                			</position>
                			<element> 100 </element>
                			<propertyFlags> 0 </propertyFlags>
                		</node>
                	</nodeContents>
                </SAMSON>
                

                The atoms below the Sidechain and Backbone are not created when reading the same, but the atom below the structural group is.

                Thanks!

                1 Reply Last reply Reply Quote 0
                • Stephane
                  Stephane last edited by

                  This looks perfect. Could you please try the following things:

                  • load the short file above, and send me the log (Edit / Show log / Submit).
                  • in the document view, select a MyAtom in a MyBackbone, and press Ctrl+C, Ctrl+V. Do you see a copy of the MyAtom appear in the document view? Serialization is also used for copy/paste, so issues should appear at that moment too.

                  Thanks,

                  Stephane

                  E 1 Reply Last reply Reply Quote 0
                  • E
                    Elisa @Stephane last edited by Elisa

                    @stephane-redon

                    The log doesn't seem to show anything, I submitted it.

                    In the document view of the original system you can see the atoms in the document view. I attach two pictures showing the system I save and the system after loading the samx file.

                    1_1553508805909_test_samx_before.PNG 0_1553508805908_test_samx_after.PNG

                    Thanks!

                    PS: The element is now on the samson store, we are still debugging a lot but I could give you access if you want.

                    PS2: Copy and paste seems to work fine.

                    And another edit: I assumed the error would be on the atom, but I tried copy and pasting the Backbone or Sidechain and this time it didn't work. Could this be the problem?

                    1 Reply Last reply Reply Quote 0
                    • Stephane
                      Stephane last edited by

                      Could you please add developer [(at)] oneangstrom.com as a collaborator and send me a samx so I can test here?

                      1 Reply Last reply Reply Quote 0
                      • E
                        Elisa last edited by

                        I did some checks in the code like:

                        void MyBackbone::unserialize(SBCSerializer * serializer, const SBNodeIndexer & nodeIndexer, const SBVersionNumber & sdkVersionNumber, const SBVersionNumber & classVersionNumber)
                        {
                        SBBackbone::unserialize(serializer, nodeIndexer, sdkVersionNumber, classVersionNumber);

                        auto test = getNumberOfAtoms();
                        int here = 1;
                        }

                        And the number of atoms there looks correct. I tried also with more than one atom, and all the number is still fine, but they are not produced in the data graph. I will try to create a mock project to test this, just in case.

                        1 Reply Last reply Reply Quote 0
                        • DmitriyMarin
                          DmitriyMarin last edited by

                          You can also check an updated Developer guide: Serialization.

                          Dmitriy,
                          The SAMSON Team, https://s-c.io

                          1 Reply Last reply Reply Quote 1
                          • Stephane
                            Stephane last edited by

                            @Elisa could you please pack the debug version as well in your SAMSON Element ? (before using the packager, you would need to build both the debug and release version). Thanks!

                            1 Reply Last reply Reply Quote 0
                            • E
                              Elisa last edited by

                              Hi,

                              I think I found the problem. Some initialization functions in the constructor of my class were overriding the unserialization. I tried to make a quick fix but when I do static casts in the unserialize function, SAMSON is crashing, so I will modify my constructor and check, it will take a bit though.

                              Thanks for your help!

                              1 Reply Last reply Reply Quote 0
                              • First post
                                Last post