code: public static Structure  readStructure(String pdbId, int bioAssemblyId) {
  
  		// pre-computed files use lower case PDB IDs
  		pdbId = pdbId.toLowerCase();
  
  		// we just need this to track where to store PDB files
  		// this checks the PDB_DIR property (and uses a tmp location if not set)
  		AtomCache cache = new AtomCache();
  		cache.setUseMmCif(true);
  		FileParsingParameters p = cache.getFileParsingParams();
  
  		// some bio assemblies are large, we want an all atom representation and avoid
  		// switching to a Calpha-only representation for large molecules
  		// note, this requires several GB of memory for some of the largest assemblies, such a 1MX4
  		p.setAtomCaThreshold(Integer.MAX_VALUE);
  
  		// parse remark 350
  		p.setParseBioAssembly(true);
  
  		// download missing files
  
  		Structure structure = null;
  		try {
  			structure = StructureIO.getBiologicalAssembly(pdbId,bioAssemblyId);
  		} catch (Exception e){
  			e.printStackTrace();
  			return null;
  		}
  		return structure;
  	}
docs: Load a specific biological assembly for a PDB entry
  
  @param pdbId .. the PDB ID
  @param bioAssemblyId .. the first assembly has the bioAssemblyId 1
  @return a Structure object or null if something went wrong.