Jack RIchardson Architecture explores the design of Southern Cross Station in Melbourne, with its iconic appearance and the innovative structural canopy design.
jackrichardson.co.uk/portfolio-item/southern-cross-station/
seen from United States
seen from Yemen

seen from United States
seen from Canada

seen from United States

seen from Germany
seen from Malaysia

seen from United Arab Emirates

seen from United Kingdom
seen from Italy

seen from China
seen from Malaysia

seen from Malaysia

seen from Hungary
seen from Singapore

seen from Hungary

seen from Hungary
seen from South Korea

seen from Tunisia

seen from China
Jack RIchardson Architecture explores the design of Southern Cross Station in Melbourne, with its iconic appearance and the innovative structural canopy design.
jackrichardson.co.uk/portfolio-item/southern-cross-station/
La Biennale di Venezia Architettura / 2018, Pavillon China.
Photo
Capturing Complexity
DNA is often pictured as a string of nucleotides tightly wound up into recognisable chromosomes, yet it only adopts this compact formation when a cell divides. The rest of the time, genomes are much more dynamic and inscrutable. In a landmark study, researchers have captured the complex 3D structure of an entire mammal genome, inside a mouse embryonic stem cell (pictured). Their pioneering technique, which involves sequencing small fragments of a fixed genome to determine which segments lie close to each other, will yield a wealth of insights into how genome organisation affects cellular function. Painstakingly reconstructing the genomes of multiple cells revealed consistent features, including the position of inactive DNA (in yellow) and active DNA, from which genes are being transcribed (in blue). Conversely, there was also unexpected variation in genome structure between individual cells, even of the same type, which may underpin variable responses to diseases and treatments.
Written by Emmanuelle Briolat
Image by Tim J. Stevens and colleagues
Department of Biochemistry, University of Cambridge, Cambridge, UK
Image copyright held by original authors
Research published in Nature, March 2017
You can also follow BPoD on Twitter , Instagram and Facebook
3D Layered Text: The Basics
New Post has been published on https://thedigitalinsider.com/3d-layered-text-the-basics/
3D Layered Text: The Basics
Recently, a client asked me to create a bulging text effect. These are exactly the kinds of creative challenges I live for. I explored several directions, JavaScript solutions, SVG filters, but then I remembered the concept of 3D layered text. With a bit of cleverness and some advanced CSS, I managed to get a result I’m genuinely proud of.
Visually, it’s striking, and it’s also a perfect project to learn all sorts of valuable CSS animation techniques. From the fundamentals of layering, through element indexing, to advanced background-image tricks. And yes, we’ll use a touch of JavaScript, but don’t worry about it right now.
There is a lot to explore here, so this article is actually the first of a three part series. In this chapter, we will focus on the core technique. You will learn how to build the layered 3D text effect from scratch using HTML and CSS. We will cover structure, stacking, indexing, perspective, and how to make it all come together visually.
In chapter two, we will add movement. Animations, transitions, and clever visual variations that bring the layers to life.
In chapter three, we will introduce JavaScript to follow the mouse position and build a fully interactive version of the effect. This will be the complete bulging text example that inspired the entire series.
3D Layered Text Article Series
The Basics (you are here!)
Motion and Variations (coming August 20)
Interactivity and Dynamism (coming August 22)
The Method
Before we dive into the text, let’s talk about 3D. CSS actually allows you to create some wild three-dimensional effects. Trust me, I’ve done it. It’s pretty straightforward to move and position elements in a 3D space, and have full control over perspective. But there’s one thing CSS doesn’t give us: depth.
If I want to build a cube, I can’t just give an element a width, a height, and a depth. There is no depth, it doesn’t work that way. To build a cube or any other 3D structure in CSS, we have two main approaches: constructive and layered.
Constructive
The constructive method is very powerful, but can feel a bit fiddly, with plenty of transforms and careful attention to perspective. You take a bunch of flat elements and assemble them together, somewhere between digital Lego bricks and origami. Each side of the shape gets its own element, positioned and rotated precisely in the 3D space. Suddenly, you have a cube, a pyramid, or any other structure you want to create.
And the results can be super satisfying. There’s something unique about assembling 3D objects piece by piece, watching flat elements transform into something with real presence. The constructive method opens up a world where you can experiment, improvise, and invent new forms. You could even, for example, build a cute robot bouncing on a pogo stick.
Layered
But here we’re going to focus on the layered method. This approach isn’t about building a 3D object out of sides or polygons. Instead, it’s all about stacking multiple layers, sometimes dozens of them, and using subtle shifts in position and color to create the illusion of depth. You’re tricking the eye into seeing volume and bulges where there’s really just a clever pile of flat elements.
This technique is super flexible. Think of a cube of sticky memo papers, but instead of squares, the papers are cut to shape your design. It’s perfect for text, 3D shapes, and UI elements, especially with round edges, and you can push it as far as your creativity (and patience) will take you.
Accessibility note: Keep in mind that this method can easily become a nightmare for screen reader users, especially when applied to text. Make sure to wrap all additional and decorative layers with aria-hidden="true". That way, your creative effects won’t interfere with accessibility and ensure that people using assistive technologies can still have a good experience.
Creating a 3D Layered Text
Let’s kick things off with a basic static example, using “lorem ipsum” as a placeholder (feel free to use any text you want). We’ll start with a simple container element with a class of .text. Inside, we’ll put the original text in a span (it will help later when we want to style this text separately from the layered copies), and another div with a class of “layers” where we’ll soon add the individual layers. (And don’t forget the aria-hidden.)
<div class="text"> <span>Lorem ipsum</span> <div class="layers" aria-hidden="true"></div> </div>
Now that we have our wrapper in place, we can start building out the layers themselves. In chapter three, we will see how to build the layers dynamically with JavaScript, but you can generate them easily with a simple loop in your preprocessor (if you are using one), or just add them manually in the code. Check out the pro tip below for a quick way to do that. The important thing is that we end up with something that looks like this.
<div class="layers" aria-hidden="true"> <div class="layer"></div> <div class="layer"></div> <div class="layer"></div> <!-- ...More layers --> </div>
Great, now we have our layers, but they are still empty. Before we add any content, let’s quickly cover how to assign their indexes.
Indexing the layers
Indexing simply means assigning each layer a variable (let’s call it --i) that holds its index. So, the first layer gets --i: 1;, the second gets --i: 2;, and so on. We’ll use these numbers later on as values for calculating each layer’s position and appearance.
There are a couple of ways to add these variables to your layers. You can define the value for each layer using :nth-child in CSS, (again, a simple loop in your preprocessor, if you’re using one), or you can do it inline, giving each layer element a style attribute with the right --i value.
.layer &:nth-child(1): --i: 1; &:nth-child(2): --i: 2; &:nth-child(3): --i: 3; /* ... More layers */
…or:
<div class="layers" aria-hidden="true"> <div class="layer" style="--i: 1;"></div> <div class="layer" style="--i: 2;"></div> <div class="layer" style="--i: 3;"></div> <!-- ...More layers --> </div>
In this example, we will go with the inline approach. It gives us full control, keeps things easy to understand, and avoids dependency between the markup and the stylesheet. It also makes the examples copy friendly, which is great if you want to try things out quickly or tweak the markup directly.
Pro tip: If you’re working in an IDE with Emmet support, you can generate all your layers at once by typing .layer*24[style="--i: $;"] and pressing Tab. The .layer is your class, *24 is the number of elements, attributes go in square brackets [ ], and $ is the incrementing number. But, If you’re reading this in the not-so-distant future, you might be able to use sibling-index() and not even need these tricks. In that case, you won’t need to add variables to your elements at all, just swap out var(--i) for sibling-index() in the next code examples.
Adding Content
Now let us talk about adding content to the layers. Each layer needs to contain the original text. There are a few ways to do this. In the next chapter, we will see how to handle this with JavaScript, but if you are looking for a CSS-only dynamic solution, you can add the text as the content of one of the layer’s pseudo elements. This way, you only need to define the text in a single variable, which makes it a great fit for titles, short labels, or anything that might change dynamically.
.layer --text: "Lorem ipsum"; &::before content: var(--text);
The downside, of course, is that we are creating extra elements, and I personally prefer to save pseudo elements for decorative purposes, like the border effect we saw earlier. We will look at more examples of that in the next chapter.
A better, more straightforward approach is to simply place the text inside each layer. The downside to this method is that if you want to change the text, you will have to update it in every single layer. But since in this case the example is static and I do not plan on changing the text, we will simply use Emmet, putting the text inside curly braces .
So, we will type .layers*24[style="--i: $;"]Lorem ipsum and press Tab to generate the layers.
<div class="text"> Lorem ipsum <div class="layers" aria-hidden="true"> <div class="layer" style="--i: 1;">Lorem ipsum</div> <div class="layer" style="--i: 2;">Lorem ipsum</div> <div class="layer" style="--i: 3;">Lorem ipsum</div> <!-- ...More layers --> </div> </div>
Let’s Position
Now we can start working on the styling and positioning. The first thing we need to do is make sure all the layers are stacked in the same place. There are a few ways to do this as well , but I think the easiest approach is to use position: absolute with inset: 0 on the .layers and on each .layer, making sure every layer matches the container’s size exactly. Of course, we’ll set the container to position: relative so that all the layers are positioned relative to it.
.text position: relative; .layers, .layer position: absolute; inset: 0;
Adding Depth
Now comes the part that trips some people up, adding perspective. To give the text some depth, we’re going to move each layer along the z-axis, and to actually see this effect, we need to add a bit of perspective.
As with everything so far, there are a few ways to do this. You could give perspective to each layer individually using the perspective() function, but my recommendation is always to apply perspective at the parent level. Just wrap the element (or elements) you want to bring into the 3D world inside a wrapper div (here I’m using .scene) and apply the perspective to that wrapper.
After setting the perspective on the parent, you’ll also need to use transform-style: preserve-3d; on each child of the .scene. Without this, browsers flatten all transformed children into a single plane, causing any z-axis movement to be ignored and everything to look flat. Setting preserve-3d; ensures that each layer’s 3D position is maintained inside the parent’s 3D context, which is crucial for the depth effect to come through.
.scene perspective: 400px; * transform-style: preserve-3d;
In this example, I’m using a fairly low value for the perspective, but you should definitely play around with it to suit your own design. This value represents the distance between the viewer and the object, which directly affects how much depth we see in the transformed layers. A smaller value creates a stronger, more exaggerated 3D effect, while a larger value makes the scene appear flatter. This property is what lets us actually see the z-axis movement in action.
Layer Separation
Now we can move the layers along the z-axis, and this is where we start using the index values we defined earlier. Let’s start by defining two custom properties that we’ll use in a moment: --layers-count, which holds the number of layers, and --layer-offset, which is the spacing between each layer.
.text --layers-count: 24; --layer-offset: 1px;
Now let’s set the translateZ value for each layer. We already have the layer’s index and the spacing between layers, so all we need to do is multiply them together inside the transform property.
.layer transform: translateZ(calc(var(--i) * var(--layer-offset)));
This feels like a good moment to stop and look at what we have so far. We created the layers, stacked them on top of each other, added some content, and moved them along the z-axis to give them depth. And this is where we’re at:
If you really try, and focus hard enough, you might see something that kind of looks like 3D. But let’s be honest, it does not look good. To create a real sense of depth, we need to bring in some color, add a bit of shadow, and maybe rotate things a bit for a more dynamic perspective.
Forging Shadows
Sometimes we might want (or need) to use the value of --i as is, like in the last snippet, but for some calculations, it’s often better to normalize the value. This means dividing the index by the total number of layers, so we end up with a value that ranges from 0 to 1. By normalizing, we keep our calculations flexible and proportional, so the effect remains balanced even if the number of layers changes.
.layer --n: calc(var(--i) / var(--layers-count));
Now we can adjust the color for each layer, or more precisely, the brightness of the color. We’ll use the normalized value on the ‘light’ of a simple HSL function, and add a touch of saturation with a bluish hue.
.layer color: hsl(200 30% calc(var(--n) * 100%));
Gradually changing the brightness between layers helps create a stronger sense of depth in the text. And without it, you risk losing some of the finer details
Second, remember that we wrapped the original text in a span so we could style it? Now is the time to use it. Since this text sits on the bottom layer, we want to give it a darker color than the rest. Black works well here, and in most cases, although in the next chapter we will look at examples where it actually needs to be transparent.
span color: black; text-shadow: 0 0 0.1em #003;
Final Touches
Before we wrap this up, let us change the font. This is of course a matter of personal taste or brand guidelines. In my case, I am going with a bold, chunky font that works well for most of the examples. You should feel free to use whatever font fits your style.
Let us also add a slight rotation to the text, maybe on the x-axis, so the lettering appears at a better angle:
.text font-family: Montserrat, sans-serif; font-weight: 900; transform: rotateX(30deg);
And there you have it, combining all the elements we’ve covered so far: the layers, indexes, content, perspective, positioning, and lighting. The result is a beautiful, three-dimensional text effect. It may be static for now, but we’ll take care of that soon.
Wrapping Up
At this point, we have a solid 3D text effect built entirely with HTML and CSS. We covered everything from structure and indexing to layering, depth, and color. It may still be static, but the foundation is strong and ready for more.
In the next chapters, we are going to turn things up. We will add motion, introduce transitions, and explore creative ways to push this effect further. This is where it really starts to come alive.
3D Layered Text Article Series
The Basics (you are here!)
Motion and Variations (coming August 20)
Interactivity and Dynamism (coming August 22)
Repurposing Protein Folding Models for Generation with Latent Diffusion
New Post has been published on https://thedigitalinsider.com/repurposing-protein-folding-models-for-generation-with-latent-diffusion/
Repurposing Protein Folding Models for Generation with Latent Diffusion
PLAID is a multimodal generative model that simultaneously generates protein 1D sequence and 3D structure, by learning the latent space of protein folding models.
The awarding of the 2024 Nobel Prize to AlphaFold2 marks an important moment of recognition for the of AI role in biology. What comes next after protein folding?
In PLAID, we develop a method that learns to sample from the latent space of protein folding models to generate new proteins. It can accept compositional function and organism prompts, and can be trained on sequence databases, which are 2-4 orders of magnitude larger than structure databases. Unlike many previous protein structure generative models, PLAID addresses the multimodal co-generation problem setting: simultaneously generating both discrete sequence and continuous all-atom structural coordinates.
From structure prediction to real-world drug design
Though recent works demonstrate promise for the ability of diffusion models to generate proteins, there still exist limitations of previous models that make them impractical for real-world applications, such as:
All-atom generation: Many existing generative models only produce the backbone atoms. To produce the all-atom structure and place the sidechain atoms, we need to know the sequence. This creates a multimodal generation problem that requires simultaneous generation of discrete and continuous modalities.
Organism specificity: Proteins biologics intended for human use need to be humanized, to avoid being destroyed by the human immune system.
Control specification: Drug discovery and putting it into the hands of patients is a complex process. How can we specify these complex constraints? For example, even after the biology is tackled, you might decide that tablets are easier to transport than vials, adding a new constraint on soluability.
Generating “useful” proteins
Simply generating proteins is not as useful as controlling the generation to get useful proteins. What might an interface for this look like?
For inspiration, let’s consider how we’d control image generation via compositional textual prompts (example from Liu et al., 2022).
In PLAID, we mirror this interface for control specification. The ultimate goal is to control generation entirely via a textual interface, but here we consider compositional constraints for two axes as a proof-of-concept: function and organism:
Learning the function-structure-sequence connection. PLAID learns the tetrahedral cysteine-Fe2+/Fe3+ coordination pattern often found in metalloproteins, while maintaining high sequence-level diversity.
Training using sequence-only training data
Another important aspect of the PLAID model is that we only require sequences to train the generative model! Generative models learn the data distribution defined by its training data, and sequence databases are considerably larger than structural ones, since sequences are much cheaper to obtain than experimental structure.
Learning from a larger and broader database. The cost of obtaining protein sequences is much lower than experimentally characterizing structure, and sequence databases are 2-4 orders of magnitude larger than structural ones.
How does it work?
The reason that we’re able to train the generative model to generate structure by only using sequence data is by learning a diffusion model over the latent space of a protein folding model. Then, during inference, after sampling from this latent space of valid proteins, we can take frozen weights from the protein folding model to decode structure. Here, we use ESMFold, a successor to the AlphaFold2 model which replaces a retrieval step with a protein language model.
Our method. During training, only sequences are needed to obtain the embedding; during inference, we can decode sequence and structure from the sampled embedding. ❄️ denotes frozen weights.
In this way, we can use structural understanding information in the weights of pretrained protein folding models for the protein design task. This is analogous to how vision-language-action (VLA) models in robotics make use of priors contained in vision-language models (VLMs) trained on internet-scale data to supply perception and reasoning and understanding information.
Compressing the latent space of protein folding models
A small wrinkle with directly applying this method is that the latent space of ESMFold – indeed, the latent space of many transformer-based models – requires a lot of regularization. This space is also very large, so learning this embedding ends up mapping to high-resolution image synthesis.
To address this, we also propose CHEAP (Compressed Hourglass Embedding Adaptations of Proteins), where we learn a compression model for the joint embedding of protein sequence and structure.
Investigating the latent space. (A) When we visualize the mean value for each channel, some channels exhibit “massive activations”. (B) If we start examining the top-3 activations compared to the median value (gray), we find that this happens over many layers. (C) Massive activations have also been observed for other transformer-based models.
We find that this latent space is actually highly compressible. By doing a bit of mechanistic interpretability to better understand the base model that we are working with, we were able to create an all-atom protein generative model.
What’s next?
Though we examine the case of protein sequence and structure generation in this work, we can adapt this method to perform multi-modal generation for any modalities where there is a predictor from a more abundant modality to a less abundant one. As sequence-to-structure predictors for proteins are beginning to tackle increasingly complex systems (e.g. AlphaFold3 is also able to predict proteins in complex with nucleic acids and molecular ligands), it’s easy to imagine performing multimodal generation over more complex systems using the same method. If you are interested in collaborating to extend our method, or to test our method in the wet-lab, please reach out!
Further links
If you’ve found our papers useful in your research, please consider using the following BibTeX for PLAID and CHEAP:
@articlelu2024generating, title=Generating All-Atom Protein Structure from Sequence-Only Training Data, author=Lu, Amy X and Yan, Wilson and Robinson, Sarah A and Yang, Kevin K and Gligorijevic, Vladimir and Cho, Kyunghyun and Bonneau, Richard and Abbeel, Pieter and Frey, Nathan, journal=bioRxiv, pages=2024--12, year=2024, publisher=Cold Spring Harbor Laboratory
@articlelu2024tokenized, title=Tokenized and Continuous Embedding Compressions of Protein Sequence and Structure, author=Lu, Amy X and Yan, Wilson and Yang, Kevin K and Gligorijevic, Vladimir and Cho, Kyunghyun and Abbeel, Pieter and Bonneau, Richard and Frey, Nathan, journal=bioRxiv, pages=2024--08, year=2024, publisher=Cold Spring Harbor Laboratory
You can also checkout our preprints (PLAID, CHEAP) and codebases (PLAID, CHEAP).
Some bonus protein generation fun!
Additional function-prompted generations with PLAID.
Unconditional generation with PLAID.
Transmembrane proteins have hydrophobic residues at the core, where it is embedded within the fatty acid layer. These are consistently observed when prompting PLAID with transmembrane protein keywords.
Additional examples of active site recapitulation based on function keyword prompting.
Comparing samples between PLAID and all-atom baselines. PLAID samples have better diversity and captures the beta-strand pattern that has been more difficult for protein generative models to learn.
Acknowledgements
Thanks to Nathan Frey for detailed feedback on this article, and to co-authors across BAIR, Genentech, Microsoft Research, and New York University: Wilson Yan, Sarah A. Robinson, Simon Kelow, Kevin K. Yang, Vladimir Gligorijevic, Kyunghyun Cho, Richard Bonneau, Pieter Abbeel, and Nathan C. Frey.
MIT’s top research stories of 2024
New Post has been published on https://thedigitalinsider.com/mits-top-research-stories-of-2024/
MIT’s top research stories of 2024
MIT’s research community had another year full of scientific and technological advances in 2024. To celebrate the achievements of the past twelve months, MIT News highlights some of our most popular stories from this year. We’ve also rounded up the year’s top MIT community-related stories.
3-D printing with liquid metal: Researchers developed an additive manufacturing technique that can print rapidly with liquid metal, producing large-scale parts like table legs and chair frames in a matter of minutes. Their technique involves depositing molten aluminum along a predefined path into a bed of tiny glass beads. The aluminum quickly hardens into a 3D structure.
Tamper-proof ID tags: Engineers developed a tag that can reveal with near-perfect accuracy whether an item is real or fake. The key is in the glue that sticks the tag to the item. The team uses terahertz waves to authenticate items by recognizing a unique pattern of microscopic metal particles mixed into the glue.
Chatting with the future you: Researchers from MIT and elsewhere created a system that enables users to have an online, text-based conversation with an AI-generated simulation of their potential future self. The project is aimed at reducing anxiety and guiding young people to make better choices.
Converting CO2 into useful products: Engineers at MIT designed a new electrode that boosts the efficiency of electrochemical reactions to turn carbon dioxide into ethylene and other products.
Generative AI for databases: Researchers built GenSQL, a new generative AI tool that makes it easier for database users to perform complicated statistical analyses of tabular data without the need to know what is going on behind the scenes. The tool could help users make predictions, detect anomalies, guess missing values, fix errors, and more.
Reversing autoimmune-induced hair loss: A new microneedle patch delivers immune-regulating molecules to the scalp. The treatment teaches T cells not to attack hair follicles, promoting hair regrowth and offering a promising solution for individuals affected by alopecia areata and other autoimmune skin diseases.
Inside the LLM black box: Researchers demonstrated a technique that can be used to probe a large language model to see what it knows about new subjects. The technique showed the models use a surprisingly simple mechanism to retrieve some stored knowledge.
Sound-suppressing silk: An interdisciplinary collaboration of researchers from MIT and elsewhere developed a silk fabric, barely thicker than a human hair, that can suppress unwanted noise and reduce noise transmission in a large room.
Working out for your nervous system: Researchers found that when muscles work out, they help neurons to grow as well. The findings suggest that biochemical and physical effects of exercise could help heal nerves.
Finding AI’s world model lacking: Researchers found that despite its impressive output, generative AI models don’t have a coherent understanding of the world. Large language models don’t form true models of the world and its rules, and can thus fail unexpectedly on similar tasks.
AI model can reveal the structures of crystalline materials
New Post has been published on https://thedigitalinsider.com/ai-model-can-reveal-the-structures-of-crystalline-materials/
AI model can reveal the structures of crystalline materials
For more than 100 years, scientists have been using X-ray crystallography to determine the structure of crystalline materials such as metals, rocks, and ceramics.
This technique works best when the crystal is intact, but in many cases, scientists have only a powdered version of the material, which contains random fragments of the crystal. This makes it more challenging to piece together the overall structure.
MIT chemists have now come up with a new generative AI model that can make it much easier to determine the structures of these powdered crystals. The prediction model could help researchers characterize materials for use in batteries, magnets, and many other applications.
“Structure is the first thing that you need to know for any material. It’s important for superconductivity, it’s important for magnets, it’s important for knowing what photovoltaic you created. It’s important for any application that you can think of which is materials-centric,” says Danna Freedman, the Frederick George Keyes Professor of Chemistry at MIT.
Freedman and Jure Leskovec, a professor of computer science at Stanford University, are the senior authors of the new study, which appears today in the Journal of the American Chemical Society. MIT graduate student Eric Riesel and Yale University undergraduate Tsach Mackey are the lead authors of the paper.
Distinctive patterns
Crystalline materials, which include metals and most other inorganic solid materials, are made of lattices that consist of many identical, repeating units. These units can be thought of as “boxes” with a distinctive shape and size, with atoms arranged precisely within them.
When X-rays are beamed at these lattices, they diffract off atoms with different angles and intensities, revealing information about the positions of the atoms and the bonds between them. Since the early 1900s, this technique has been used to analyze materials, including biological molecules that have a crystalline structure, such as DNA and some proteins.
For materials that exist only as a powdered crystal, solving these structures becomes much more difficult because the fragments don’t carry the full 3D structure of the original crystal.
“The precise lattice still exists, because what we call a powder is really a collection of microcrystals. So, you have the same lattice as a large crystal, but they’re in a fully randomized orientation,” Freedman says.
For thousands of these materials, X-ray diffraction patterns exist but remain unsolved. To try to crack the structures of these materials, Freedman and her colleagues trained a machine-learning model on data from a database called the Materials Project, which contains more than 150,000 materials. First, they fed tens of thousands of these materials into an existing model that can simulate what the X-ray diffraction patterns would look like. Then, they used those patterns to train their AI model, which they call Crystalyze, to predict structures based on the X-ray patterns.
The model breaks the process of predicting structures into several subtasks. First, it determines the size and shape of the lattice “box” and which atoms will go into it. Then, it predicts the arrangement of atoms within the box. For each diffraction pattern, the model generates several possible structures, which can be tested by feeding the structures into a model that determines diffraction patterns for a given structure.
“Our model is generative AI, meaning that it generates something that it hasn’t seen before, and that allows us to generate several different guesses,” Riesel says. “We can make a hundred guesses, and then we can predict what the powder pattern should look like for our guesses. And then if the input looks exactly like the output, then we know we got it right.”
Solving unknown structures
The researchers tested the model on several thousand simulated diffraction patterns from the Materials Project. They also tested it on more than 100 experimental diffraction patterns from the RRUFF database, which contains powdered X-ray diffraction data for nearly 14,000 natural crystalline minerals, that they had held out of the training data. On these data, the model was accurate about 67 percent of the time. Then, they began testing the model on diffraction patterns that hadn’t been solved before. These data came from the Powder Diffraction File, which contains diffraction data for more than 400,000 solved and unsolved materials.
Using their model, the researchers came up with structures for more than 100 of these previously unsolved patterns. They also used their model to discover structures for three materials that Freedman’s lab created by forcing elements that do not react at atmospheric pressure to form compounds under high pressure. This approach can be used to generate new materials that have radically different crystal structures and physical properties, even though their chemical composition is the same.
Graphite and diamond — both made of pure carbon — are examples of such materials. The materials that Freedman has developed, which each contain bismuth and one other element, could be useful in the design of new materials for permanent magnets.
“We found a lot of new materials from existing data, and most importantly, solved three unknown structures from our lab that comprise the first new binary phases of those combinations of elements,” Freedman says.
Being able to determine the structures of powdered crystalline materials could help researchers working in nearly any materials-related field, according to the MIT team, which has posted a web interface for the model at crystalyze.org.
The research was funded by the U.S. Department of Energy and the National Science Foundation.
Human Body 3D Xray While Running #running #3danimation #3dmodeling #shorts