{"Abstract":["Why rivers confine flow to a single channel (single-thread planform) or\n divide flow into multiple sub-channels (multi-thread planform) forms a\n longstanding fundamental question in river science, which to date remains\n poorly understood. In the associated manuscript, we probe planform origins\n using a novel dataset of 11+ million riverbank migration vectors mapped\n from 36 years of global satellite imagery along 84 river systems. Results\n show single-thread rivers originate from a balance between bank erosion\n and opposing-bar deposition, which maintains an equilibrium width as\n channels migrate. In contrast, multi-thread rivers originate from\n imbalance: bank erosion outpaces opposing-bar deposition, causing\n sub-channels to repeatedly widen and split. This width instability\n challenges equilibrium paradigms in river science, endangers riverside\n communities, and lowers the potential costs of nature-based river\n restoration projects along multi-thread rivers. Here, we provide the data\n and codes that form the foundation of this manuscript. "],"TechnicalInfo":["# Data and code for: River planforms originate from (im)balance between\n bank erosion and bar accretion --- author: Austin Chadwick contact:\n [achadwick@ldeo.columbia.edu](mailto:achadwick@ldeo.columbia.edu),\n [austin.chadwick23@gmail.com](mailto:austin.chadwick23@gmail.com) These\n materials are organized into two folders, Codes and Data. The Data folder\n contains spreadsheets, GIS geopackages, remote sensing images, and MATLAB\n data files for the associated manuscript "River planforms originate\n from (im)balance between bank erosion and bar accretion". The Codes\n folder provides MATLAB scripts and functions to generate the analysis and\n figures of the main manuscript. The last folder, temp, is empty; it acts\n as a temporary destination for output files that can be generated by the\n codes. ## Description of the data and file structure All data are found in\n the folder "Data", which can be accessted by opening the zip\n file "Data.zip". The following is a breakdown of each file and\n subfolder in the Data folder. * DataLog_082224_1.xlsx This excel document\n records the files used to apply PIV to remote sensing imagery, organized\n on a site-by-site basis. All files referenced therein are found in the\n Data folder. See the first sheet therein "Readme" for details. *\n Polygons subfolder This subfolder contains geopackage files (.gpkg) for\n each study reach in the main manuscript. Each file contains geopackage\n data for a single polygon that outlines and defines the study reach. These\n data were used to extract GEOTIFFs using google earth engine, and were\n obtained by manual selection in QGIS. See main manuscript for details on\n the selection process and sizing of each polygon. * Geotiffs subfolder\n This folder contains DSWE-derived river-mask GEOTIFFs derived from Landsat\n median annual composites, used for the analysis and figures of the main\n manuscript "River planforms originate from (im)balance between bank\n erosion and bar accretion". The DSWE-derived river masks were created\n in Google Earth Engine using the "GEE_watermasks" code found on\n the GitHub Repository\n ([https://github.com/evan-greenbrg/GEE_watermasks](https://github.com/evan-greenbrg/GEE_watermasks)). Each subfolder corresponds to a study reach in the main manuscript (see Table 1 in main manuscript), with nested subfolders containing river masks derived using DSWE confidence levels 1 through 4 (mask1, mask2, mask3, mask4). * PreparedImagery subfolder This folder contains true-color images and DSWE-derived river masks (.tif) for each study reach. These data were used as input data for PIV. For each site, there is a subfolder containing truecolor images ("Color") and sixteen subfolders containing DSWE-derived river masks for the four different confidence levels and four different tilt angles ("MaskX_TiltYY", where X is the confidence level and YY is the tilt angle). In each of these subfolders, there are two nested subfolders "RemovedBlanks" and "RemovedForSubsampling" which contain additional .tif's that were removed because they were blank or because optimal PIV analysis required subsampling, respectively. For details of this process, see: [https://doi.org/10.1029/2023JF007177](https://doi.org/10.1029/2023JF007177). * OutputFromPIVlab subfolder This folder contains the Raw PIV data output from PIVlab software for each site. Each site-specific subfolder contains sixteen .mat files, each of which corresponds to a specific confidence level and tilt angle in the prepared imagery (see DataLog_082224_1.xlsx for details on which file corresponds to which confidence level and tilt angle). For additional instructions on how to operate PIVlab , please see the following links: [http://sead-published.ncsa.illinois.edu/seadrepository/api/researchobjects/urn:uuid:6154f24ae4b0312e761fb761](http://sead-published.ncsa.illinois.edu/seadrepository/api/researchobjects/urn:uuid:6154f24ae4b0312e761fb761) [https://www.mathworks.com/matlabcentral/fileexchange/27659-pivlab-particle-image-velocimetry-piv-tool-with-gui](https://www.mathworks.com/matlabcentral/fileexchange/27659-pivlab-particle-image-velocimetry-piv-tool-with-gui) * PostprocessedPIV subfolder This folder contains the postprocessed PIV data output. Each site-specific subfolder contains four .mat files. These files contain the postprocessed data before filtering (Unfiltered.mat), the postprocessed data after filtering ("Filtered.mat"), the postprocessed data after filtering and setting all NaN values along high-confidence banks to zero ("Filtered_NanToZeroOnBank"). * BankNormalVectors subfolder This folder contains the bank-normal vector fields for each image. The data structure is identical to the PostprocssedPIV data, with a single .mat file for each river "BankNormalVectors.mat". All vectors have a length of 1, and are oriented perpendicular to the nearest channel bank, pointing away from the wetted area and towards the dry area. For details on this calculation, see: [https://doi.org/10.1029/2021WR031236](https://doi.org/10.1029/2021WR031236). * CrossSections subfolder This folder contains the data for the thread cross sections randomly sampled in each reach to calculate the differential migration rate (delv). Each site-specific subfolder contains a single mat file, "CrossSections.mat". This mat contains the positions (x,y) and the bank migration vectors (u,v) for each cross section. Spatial units are in pixels, and temporal units are in frames, such that velocities are in units of pixels/frame. * WettedAreas subfolder This folder contains the data for the wetted channel areas, used to investigate apparent changes in water discharge and plot supplemental figures. Each site-specific subfolder contains a single mat file, "WettedAreas.mat". This mat contains the positions (x,y) and the bank migration vectors (u,v) for each cross section. ## Sharing/Access information Some data referenced in the Datalog_082224.xlsx spreadsheet was derived from previous work: * Sylvester et al., 2019: [https://doi.org/10.1130/G45608.1](https://doi.org/10.1130/G45608.1) * Rowland et al., 2019: [https://doi.org/10.15485/1571527](https://doi.org/10.15485/1571527) * Galeazzi et al., 2021: [https://doi.org/10.1130/G49121.1](https://doi.org/10.1130/G49121.1) * Ielpi et al., 2023: [https://doi.org/10.1029/2022GL101285](https://doi.org/10.1029/2022GL101285) ## Code/Software All codes are found in the folder "Codes", which can be accessed by opening the zip folder "Codes.zip". To run any codes, it is necessary to add the "Codes" and "Data" folders (and their subfolders) to your current MATLAB path. This can be easily achieved by right-clicking the folder in the MATLAB GUI and selecting "Add To Path-->SelectedFolders and Subfolders", and will ensure that all input and output files are identified properly. The following is a breakdown of each file and subfolder in the Codes folder: * AnalsysisAndFigures1_Worldmap_082924_1.m This MATLAB script reproduces Figure 1A of the manuscript and its associated analysis. * AnalysisAndFigures2_PIVmethods_082924_1.m This MATLAB script reproduces Figure 1E of the manuscript and its associated analysis. * AnalysisAndFigures3_DifferentialMigration_082924_1.m This MATLAB script reproduces Figure 2A and Figure 4 of the manuscript, Text S1 Figures 1–4 of the supplement, and their associated analysis. It also reproduces the tabular data in Data S1, performs the statistical tests on delv* reported in the text, and counts the number of vector measurements in our database as reported in the text. * AnalysisAndFigures4_TimeSlices_082924_1.m This MATLAB script reproduces Figure 2B-G and Figure 4 of the manuscript and Figures S1–S3 of the supplement and their associated analysis. In the first code block (L23–36), the user designates the reach and cross section to plot by uncommenting the corresponding line. See code's comments on L23–36 for details. * AnalysisAndFigures5_MaterialsAndMethods_082924_1 This MATLAB script reproduces the supplement's Materials & Methods Figures 1–6 and their associated analysis. In the first code block (L19-23), the user designates the reach to plot by uncommenting the corresponding line. See code's comments on L19-23 for details. * AnalysisAndFigures6_SuppMovieFrames_082924_1.m This MATLAB script reproduces the frames of supplementary Movies S1–S3. In the first code block (L18-23), the user designates the reach to plot by uncommenting the corresponding line. See code's comments on L18-23 for details. * LatLonBySite_081924_1.xlsx This excel document records the approximate latitude and longitude coordinates of each studied reach in the main manuscript. These coordinates were used to generate Fig. 1 in the main manuscript, and were obtained by manually inspecting the coordinates of each .gpkg file in QGIS. The precise geographic coordinates for each reach can be found in the .gpkg files, in the Polygons subfolder described above. ### Change Log Version 2: minor changes in README."]}
more »
« less
The Widths of Rivers and Streams Across Spatial Scales Datasets
{"Abstract":["Water masks, river centerlines and river widths measured and generated for analysis for The Widths of Rivers and Streams Across Spatial Scales. Water masks are labelled as "river = 255", "lake/reservoir = 128", and "canal = 64" and are presented as .tif files with associated .tfw files; river centerline data are presented as .shp files with associated .dbf, .shx, and .prj files or as .kmz files; river width data are presented as .csv files."]}
more »
« less
- Award ID(s):
- 2243001
- PAR ID:
- 10684372
- Publisher / Repository:
- Zenodo
- Date Published:
- Format(s):
- Medium: X
- Right(s):
- Creative Commons Attribution 4.0 International
- Sponsoring Org:
- National Science Foundation
More Like this
-
-
{"Abstract":["Files to accompany "Modeling of AR~12760 with GX~Simulator and Evidence for the Extended Transition Region in Peripheral Active Region Loops" by Kucera, Nita, Klimchuck, & Fleishman, submitted to ApJ 2025\n\n \n\nThis work used the gx_simulator Solar Soft IDL package which can be found at\n\nhttps://github.com/Gelu-Nita/GX_SIMULATOR\n\nUsed with Solar Soft https://www.lmsal.com/solarsoft/\n\n \n\nDirectories and files:\n\n \n\nSDO - directory containing time averaged SDO files in IDL Save format each map is a MAP structure array containing the map and the uncertainties (set to a value of 1 in this case).\n\n \n\nGXM - Files containing the magnetic field model as well as information about the transition region mask and EBTEL files to be used.\n\n \n\nhmi.M_720s.20200428_111042.E55S7CR.CEA.NAS.CHR_no_background_200TR_e_scl_1_alpha_-1.gxm - Magnetic Model 1\n\nhmi.M_720s.20200428_111042.E55S7CR.CEA.NAS.CHR_180x180x200_dx2800_no_bckgrnd_TR200_eb1-1.gxm - Magnetic Model 2\n\ncan create and inspect with gx.pro routine, and used by gx_search4bestq.pro (see below)\n\n \n\nFitMasks - Directory containing fit masks specifying which pixel should be used in intensity model/data comparisons\n\nIDL save files containing arrays (named 'MASK')specifying what portions of the images\n\nshould be used for image model comparison.\n\nUsed by gx_search4bestq.pro\n\nmask_0percent211A_noedge_Nx30Ny30xr-195t45yr-170t70.sav\n\n - used with Magnetic Model 1, 8" resolution comparison\n\nmask_0percent211A_noedge_Nx120Ny120xr-195t45yr-170t70.sav\n\n - used with Magnetic Model 1, 2" resolution comparison\n\nmask_0percentI_noedge_Nx120Ny120xr-195t45yr-170t70_dx2800.sav\n\n - used with Magnetic Model 2, 2" resolution comparison\n\nmask_0percent211A_noedge_noTR_Nx120Ny120xr-195t45yr-170t70_dx1400.sav\n\n - used with Magnetic Model 1, 2" resolution comparison, removing pixels thought to contain TR emission.\n\n \n\nResults\n\nThese files contain the results for the best q_0 fits for various a,b grids.\n\n \n\nResults for Magnetic Model 1, 2" model/data comparison, including both model corona and transition region emission\n\nresults_94A_yesTR.sav\n\nresults_131A_yesTR.sav\n\nresults_171A_yesTR.sav\n\n \n\nresults_193A_yesTR.sav\n\nresults_211A_yesTR.sav\n\nresults_335A_yesTR.sav\n\n \n\nResults for Magnetic Model 2, 2" model/data comparison, including both model corona and transition region emission\n\nresults_171A_yesTR_MMod2.sav\n\nresults_211A_yesTR_MMod2.sav\n\n \n\nResults for Magnetic Model 1, 8" model/data comparison, including both model corona and transition region emission\n\nresults_211A_yesTR_resize30.sav\n\nresults_335A_yesTR_resize30.sav\n\n \n\nResults for Magnetic Model 1, 2" model/data comparison, including only the model corona and not transition region emission\n\nresults211A_noTR.sav\n\n \n\nThe input SDO data, GMX model and FitMasks can be used to calculate the best q0 values for a given a, b pair with calls like this:\n\n \n\nIDL> gxmfile='GXM/hmi.M_720s.20200428_111042.E55S7CR.CEA.NAS.CHR_no_background_200TR_e_scl_1_alpha_-1.gxm'\n\nIDL> aiafile='AIA/AIA211_r20200428111500_s20200428091511_e20200428131011_const_uncert1.sav'\n\nIDL> Fitmaskfile='FitMasks/mask_0percent211A_noedge_noTR_Nx120Ny120xr-195t45yr-170t70_dx1400.sav'\n\nIDL> a=1 & b=2\n\nIDL> result=gx_search4bestq(gxmpath=gxmfile,$$\n\nmoddir='moddir',$$ ;output directory for calculated model maps\n\npsDir='psdir',$$ ;output directory for plot files with information about the fit to q0\n\ntmpDir='tmpdir',$$. ;output directory for temp files\n\nrefdatapath=aiafile,$$\n\nebtel_path='ebtel_scale=1_alpha=-1.sav',$$. ;one of existing EBTEL files in GX simulator distribution\n\nrenderer='aia_lib.pro',$$. ;existing aia renderer file in GX Simulator distribution\n\nNx=120, Ny=120, resize=[120,120],$$ ;Size of input and output maps in pixels\n\nxc=-75, yc=-50, xfov=240, yfov=240,$$ ; center and extent of field of view in arcsec\n\na_arr= a, b_arr=b, q_start=[ 0.00100000, 0.0100000],$$ ; a, b, and initial range for q0 values\n\nshift=[0,0],$$ ;do not attempt to coalign the magnetic field and intensity data (not needed for SDO)\n\naddTR=1,$$ ;Include the transition region (1 is default)\n\nall=1,$ ;make calculations parallel mask=FitMaskFile)\n\n \n\nIn order to do fits to a full a,b grid it is recommended that the user use the GUI based gx_chmp.pro\n\nThe results files are produced by the gx_chmp.pro routine and include and array of the results\n\nfrom a grid of gx_search4bestq .pro results.\n\nfor example:\n\nIDL> ResultFileName='Results/results_211A_yesTR.sav'\n\nIDL> restore,ResultFilename,/ver\n\nIDL> tmp=min(result.chi2_best,w) ;find the index,w, of the best fit\n\nIDL> a=result[w].a ;best fit a\n\nIDL> b=result[w].b ;best fit b\n\nIDL> q0= result[w].q_chi2_best ;best fit q0\n\nIDL> modmap=result[w].chi2_best_metrics->get(0,/map) ;model map. SolarSoft MAP structure\n\nIDL> AIAmap=result[w].chi2_best_metrics->get(1,/map) ;The AIA map compared to model map. SolarSoft MAP structure.\n\n "]}more » « less
-
{"Abstract":["This record provides access to 10,800 initial configurations and 216,000 morphological snapshots of cross-linked single-chain nanoparticles (SCNPs). Of the 108,000 production snapshots, 81,000 correspond to SCNPs cross-linked under shear (across three distinct shear rates) and 27,000 correspond to SCNPs cross-linked under quiescent conditions. The remaining 108,000 snapshots capture the same SCNPs after quiescent relaxation. Data are organized into three ZIP archives, which extract to HOOMD-blue GSD trajectory files. The dataset was compiled using Python 3.12.3.\n\nReferencesThe specific applications and analyses of this dataset are described in1. Chertok, M.D.; Stone, H.A.; Webb, M.A. "Effect of Shear Flow and Precursor Polymer Design on Single-Chain Nanoparticle Formation"\n\nDataThere are three .zip files that contain HOOMD-blue GSD trajectory files.\n\n\n\nconformations_during_init_n=50_100_150.zip: contains the GSD files used for initial configurations. There are 1,080 files in total, each with 10 frames. Each frame represents one replicate (an independent simulation of the same system from a different initial configuration under identical conditions).\n\nsampled_production_conformations.zip: contains 10,800 GSD files. Each file includes the 10 snapshots used to analyze SCNP morphologies under shear. Snapshots were sampled uniformly from the final 50% of trajectory frames, after cross-linking was complete while shear remained applied.\n\nsampled_post_crosslinking_eq_conformations.zip: contains 10,800 GSD files. Each file includes the 10 snapshots used to analyze SCNP morphologies after quiescent relaxation. Snapshots were sampled uniformly from the final 83.3% of frames, after shear was removed and chains had sufficient time to relax.\n\n\nUsageTo write the data in a .zip file into a pandas dataframe, users can execute the following: \n\nimport zipfile\nfrom pathlib import Path\nimport tempfile\n\nimport freud\nimport gsd.hoomd\nimport numpy as np\nimport pandas as pd\n\nDATA_DIR = Path("your/custom/dir")\nZIP_NAME = "sampled_production_conformations.zip"\n\nrecords = []\n\n# Extract to a temporary directory\nwith zipfile.ZipFile(DATA_DIR / ZIP_NAME) as zf, tempfile.TemporaryDirectory() as tmpdir:\n zf.extractall(tmpdir)\n for gsd_path in Path(tmpdir).rglob("*.gsd"):\n # Pull backbone length from the filename; only backbone beads are considered in the analysis\n name = gsd_path.name\n n_backbone = int(name.split("n_backbone=")[1].split("_")[0])\n\n with gsd.hoomd.open(str(gsd_path), "r") as trajectory:\n for frame_index, frame in enumerate(trajectory):\n hoomd_box = freud.box.Box.from_box(frame.configuration.box)\n\n # Restrict to backbone particles and unwrap periodic boundary conditions\n positions = np.asarray(frame.particles.position)[:n_backbone]\n images = np.asarray(frame.particles.image)[:n_backbone]\n positions = hoomd_box.unwrap(positions, images)\n\n records.append(\n {\n "filename": name,\n "frame_index": frame_index,\n "n_backbone": n_backbone,\n "positions": positions,\n }\n )\n\n# Combine all frames into a single DataFrame ready for analysis\ndf = pd.DataFrame(records)\nprint(df.head())\n\nHelp, Suggestions, Corrections?If you need help, have suggestions, identify issues, or have corrections, please send your comments to Matthew Chertok at matthewchertok@princeton.edu\n\nGitHubAdditional data and code relevant for this study is accessible at https://github.com/webbtheosim/md-simulation-files/tree/main/2025-scnp-shear"]}more » « less
-
This data set for the manuscript entitled "Computational Design of a Cyclic Peptide that Inhibits the CTLA4 Immune Checkpoint Pathway" includes all files needed to run and analyze the simulations of a designed cyclic peptide (Peptide 16) bound to CTLA4 in the putative most stable binding configuration, which is detailed in Figure 6 of the paper. These files include molecular model structure files (NAMD psf), force field parameter files (in CHARMM format), initial atomic coordinates (pdb format), NAMD configuration files, NAMD output including restart files (in binary NAMD format) and trajectories in dcd format (downsampled to 10 ns per frame). Analysis is controlled by shell scripts (Bash-compatible) that call VMD Tcl scripts. These scripts and their output are also included. Version: 1.0 Conventions Used in These Files =============================== Structure Files ---------------- - ctla4_P16_wat.psf (original NAMD (XPLOR?) format psf file including atom details (type, charge, mass), as well as definitions of bonds, angles, dihedrals, and impropers for each dipeptide.) - ctla4_P16.pdb (initial coordinates before equilibration) - repart_*.psf (same as the above psf files, but the masses of non-water hydrogen atoms have been repartitioned by VMD script repartitionMass.tcl) - rest*.pdb (same as the above pdb files, but atoms have been marked for restraints in NAMD. These files are generated by doPrep.sh, with restraints applied to different atoms.) Force Field Parameters ---------------------- CHARMM format parameter files: - par_all36m_prot.prm (CHARMM36m FF for proteins) - toppar_water_ions_prot.str (CHARMM water and ions with NBFIX parameters needed for protein and others commented out) Template NAMD Configuration Files --------------------------------- These contain the most commonly used simulation parameters. They are called by the other NAMD configuration files (which are in the namd/ subdirectory): - template_min.namd (minimization) - template_rest.namd (NPT equilibration with different parts of the protein restrained) - template_prod.namd (for the long production simulations) Minimization ------------- - namd/min_*.0.namd Restraints ------------- - namd/rest_*.0.namd (both CTLA4 binding site and peptide atoms are restrained) - namd/rest_*.1.namd (CA atoms of CTLA4 and all atoms of the peptide are restrained) - namd/rest_*.2.namd (all atoms of only the peptide are restrained) - namd/rest_*.3.namd (only CA atoms of only the peptide are restrained) - namd/rest_*.4.namd (no atoms are restrained) Production ------------- - namd/pro_*.{D,E,F}.0.namd Analysis ------------- - interaction.sh (Shell script for running analysis with VMD) - calcSeparationNearestAtom.tcl (Calculate the separation between two selections, taking the shortest distance between any pair of atoms spanning the two selections. Accounts for (orthogonal) periodic boundary conditions.) - useful.tcl (VMD Tcl script with a library of useful procs, used by the script above) - sep_*.dat (Output of the above analysis containing rows with two columns: time in nanoseconds and minimum distance in Å) Scripts ------- Files with the .sh extension can be found throughout. These usually provide the highest level control for submission of simulations and analysis. Look to these as a guide to what is happening.more » « less
-
Dataset Description This dataset contains 6710 structural configurations and solvophobicity values for topologically and chemically diverse coarse-grained polymer chains. Additionally, 480 polymers include shear-rate dependent viscosity profiles at 2 wt% polymer concentration.The data is provided as serialized objects using the pickle Python module.All files were generated using Python version 3.10. Data There are three pickle files containing serialized Python objects. Key files include: data_aug10.pickle Contains the coarse-grained polymer dataset with 6710 entries. Each entry includes: Polymer graph Squared radius of gyration (at lambda = 0). Solvophobicity (lambda). Bead count (N). Chain virial number (Xi). topo_param_visc.pickle Shear-rate-dependent viscosity profiles of 480 polymer systems. target_curves.pickle Contains 30 target viscosity profiles used for active learning. Usage To load the dataset stored in data_aug10.pickle, use the following code: import pickle with open("data_aug10.pickle", "rb") as handle: ( (x_train, y_train, c_train, l_train, graph_train), (x_valid, y_valid, c_valid, l_valid, graph_valid), (x_test, y_test, c_test, l_test, graph_test), NAMES, SCALER, SCALER_y, le ) = pickle.load(handle) x: node features for each polymer graph y: labels (e.g., predicted properties) c: topological class indices l: topological descriptors graph: NetworkX graphs representing polymer topology NAMES: list of topological class names SCALER: fitted scaler for topological descriptors (l) SCALER_y: fitted scaler for property labels (y) le: label encoder for topological class indices To load the dataset stored in topo_param_visc.pickle, use the following code: import pickle with open("poly_data_ml.pickle", "rb") as handle: desc_all, ps_all, curve_all, shear_rate, graph_all = pickle.load(handle) desc_all: topological descriptors for each polymer graph ps_all: fitted Carreau–Yasuda model parameters curve_all: fitted viscosity curves shear_rate: shear rates corresponding to each viscosity curve graph_all: polymer graphs represented as NetworkX objects First 30: seed dataset Next 150: 5 iterations (30 each) from class-balanced space-filling Following 150: space-filling without class balancing Final 150: active learning samples To load the dataset stored in target_curves.pickle, use the following code: import pickle with open("target_curves.pickle", "rb") as handle: data = pickle.load(f) curves = data['curves']params = data['params']shear_rate = data["xx"] curves: target viscosity curves used as design objectives params: Carreau–Yasuda model parameters fitted to the target curves shear_rate: shear rate values associated with the target curves Help, Suggestions, Corrections?If you need help, have suggestions, identify issues, or have corrections, please send your comments to Shengli Jiang at sj0161@princeton.edu GitHubAdditional data and code relevant for this study is additionally accessible at https://github.com/webbtheosim/cg-topo-solvmore » « less
An official website of the United States government
